小编Rob*_*ert的帖子

OpenCL与OpenMP性能

是否有任何研究比较OpenCL和OpenMP性能?具体来说,我感兴趣的是使用OpenCL启动线程的开销,例如,如果要将域分解为大量单个工作项(每个工作项由一个执行小工作的线程运行),而不是OpenMP中的较重权重线程.域被分解为子域,其数量等于核心数.

似乎OpenCL编程模型更多地针对大规模并行芯片(例如GPU),而不是具有更少但更强大的内核的CPU.

OpenCL可以成为OpenMP的有效替代品吗?

gpgpu opencl

29
推荐指数
2
解决办法
2万
查看次数

测试numpy数组中的所有值是否相等

我有一个numpy一维数组c,应该填充内容 a + b.我首先a + b在使用的设备上执行PyOpenCL.

我想c使用numpy切片快速确定python中结果数组的正确性.

这就是我现在拥有的

def python_kernel(a, b, c):
    temp = a + b
    if temp[:] != c[:]:
        print "Error"
    else:
        print "Success!"
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

ValueError:具有多个元素的数组的真值是不明确的.使用a.any()或a.all()

但似乎a.anya.all将只确定值是否不为0.

我应该怎么做,如果我想测试,如果所有的缩放器numpy阵列temp都等于在每个值numpy阵列c

python numpy

16
推荐指数
3
解决办法
5万
查看次数

用于在C中模拟访问二维数组的宏

OpenCL仅允许使用C99规范访问单维数组.然而我的问题是二维的,我在主机端使用二维数组

我不想通过计算索引使我的代码可读性降低,而是想使用C宏来获取元素A[i][j].不幸的是,我在这方面做得很差,而且对C的经验也不多.我想我对如何做到这一点有了一般的想法,但如果有人可以批评,我将不胜感激.

它会是这样的:

#define 2d_access(u, y, x) (u[y][x])
Run Code Online (Sandbox Code Playgroud)

其中u是矩阵,y是行,x是列,宏将返回值 u[y][x]

矩阵是静态分配的,因此宏将具有WIDTH组件.

#define 2d_access(u, y, x) (u[y * WIDTH] + x])
Run Code Online (Sandbox Code Playgroud)

c opencl multidimensional-array

11
推荐指数
3
解决办法
5262
查看次数

标签 统计

opencl ×2

c ×1

gpgpu ×1

multidimensional-array ×1

numpy ×1

python ×1