问题标签 [pyopencl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2161 浏览

python - 如何在 pyopencl 中创建可变大小的 __local 内存?

在我的 C OpenCL 代码中,我clSetKernelArg用来创建__local用于我的内核的“可变大小”内存,这在 OpenCL 本身中不可用。看我的例子:

我现在的问题是,如何在 pyopencl 中做同样的事情?

我查看了 pyopencl 附带的示例,但我唯一能找到的是一种使用模板的方法,在我看来,这似乎是一种矫枉过正的做法。见例子。

你有什么建议吗?

0 投票
2 回答
815 浏览

python - 使用 PyOpenCL 进行结构对齐

更新:int4我的内核中的错误。

我正在使用 pyopencl 但无法使结构对齐正常工作。在下面的代码中,两次调用内核,该b值被正确返回(如 1),但该c值具有一些“随机”值。

换句话说:我正在尝试读取结构的两个成员。我能读第一个但不能读第二个。为什么?

无论我使用 numpy 结构化数组还是使用 struct 打包,都会出现同样的问题。评论中的_-attribute__设置也无济于事。

我怀疑我在代码的其他地方做了一些愚蠢的事情,但看不到它。任何帮助表示赞赏。

输出(我必须在剪切+粘贴时重新格式化,所以可能稍微弄乱了换行符;我还添加了注释,说明各种打印值是什么):

0 投票
2 回答
4121 浏览

coding-style - 如何构建大型 OpenCL 内核?

我曾在几个项目中使用 OpenCL,但始终将内核编写为一个(有时相当大)函数。现在我正在处理一个更复杂的项目,并希望在多个内核之间共享功能。

但是我能找到的示例都将内核显示为单个文件(很少有人调用辅助函数)。似乎应该可以使用多个文件 -clCreateProgramWithSource()接受多个字符串(并组合它们,我假设) - 尽管 pyopenclProgram()只需要一个源。

所以我想听听任何有这样做经验的人的意见:

  • 是否存在与多个源文件相关的问题?
  • pyopencl 是简单地连接文件的最佳解决方法吗?
  • 有没有办法编译函数库(而不是在每个内核中传递库源,即使不是全部都使用)?
  • 如果每次都需要传入库源,是否会丢弃未使用的函数(无开销)?
  • 还有其他最佳实践/建议吗?

谢谢。

0 投票
2 回答
630 浏览

python - 如何将 C++ 图结构转换为 Python/Numpy 图结构?

免责声明:本文作者对 C++ 和 Python 的了解有限,对 Java 和 Ruby 有足够的了解。

“OpenCL 编程指南”一书中的一个示例使用以下 OpenCL 自定义图形数据结构,以便 Dijkstra 算法在 OpenCL 设备上运行:

此数据结构基于 Pawan Harish 和 PJ Narayanan 撰写的“使用 CUDA 在 GPU 上加速大型图形算法”一文中的示例。

基本上,它有三个数组:一个顶点数组V,每个顶点指向它在边数组中的相邻顶点E(一个顶点i+1的相邻顶点i紧跟在数组中的该顶点的相邻顶点E)。第三个数组用于边缘权重(还有两个更具体的 OpenCL 相关数组)。

如何在 Python/Numpy 中表示这个数据结构?我想在 PyOpenCL 中使用它。

0 投票
2 回答
2309 浏览

python - PyOpenCL vs Clyther vs 纯 OpenCL 和 C99:什么对新手最好?

我有一个问题:快速线性系统求解(我有很多这样的系统)。我将使用 GPU 和 OpenCL 解决它。

我喜欢动态语言,例如 Ruby 或 Python,并且我已经摆脱了使用 C 等低级语言的习惯。

所以我有两个同时的目标:

  1. 开发这样的 OpenCL 解决方案,以尽可能少的努力尽可能快地求解线性系统。
  2. 不要在性能上损失太多。我不想为了方便而支付 2-10 倍的减速,但我准备为使用高级语言的工作支付 30-50%。

对我来说最好的情况是:几乎在 OpenCL C 中编译 python 代码几乎没有浪费。

我找到了这样的解决方案:pure OpenCL C、PyOpenCLClyther

我应该从什么开始?

0 投票
0 回答
475 浏览

python - PyOpenCL - '构建成功,但导致非空日志'

我刚开始使用 PyOpenCL 和一般的 OpenCL(来自 CUDA)。事情是,当我使用这个非常简单的虚拟内核时:

我在构建步骤得到了这个:

C:\Python27\lib\site-packages\pyopencl\cache.py:338:用户警告:构建成功,但导致非空日志:在 pyopencl.Device ' Intel(R) Core(TM) i5-2410M CPU 上构建@ 2.30GHzC:\Python27\lib\site-packages\pyopencl__init__.py:173:用户警告:构建成功,但导致非空日志:在 pyopencl.Device ' Intel(R) Core(TM) i5-2410M CPU 上构建@ 2.30GHz

在这里我什至没有返回我的解释器命令提示符,我必须按 Enter 键才能返回到提示符。我想应该有一些实际的信息,但我无法让它显示出来。顺便说一句,内核运行良好,所以没有问题。这很烦人。任何想法这可能是什么?

0 投票
1 回答
837 浏览

opencl - 这个 OpenCL 代码可以优化吗?

我正在为一个专门的矩阵函数编写一段 OpencL 代码:对于一个Dx1向量v、两个DxD矩阵AB一个常数c,返回1xD向量r在哪里r[i] = c * sum_over_j (v[j] * A[i][j] * B[i][j])

以下是我到目前为止的内容,但运行速度非常慢。没有求和但返回DxD矩阵的版本大约快十倍。如果这有什么不同,它会从 PyOpenCL 中调用。

有什么做错了吗?可以优化吗?

干杯!

0 投票
1 回答
1105 浏览

wait - PyOpenCL:Event.wait() 有什么用?

PyOpenCL 文档中未注释此函数:http ://documen.tician.de/pyopencl/runtime.html?highlight=enqueue#pyopencl.Event.wait

我的问题是:我必须在 for 循环中调用内核,并在每次调用后将复制操作与pyopencl.enqueue_copy_buffer(dest, src, size). 首先,我使用.wait()附加的 (ie pyopencl.enqueue_copy_buffer(dest, src, size).wait()) 执行此操作,因为我在示例中找到了这一点。然后我删除.wait()并获得了非常显着的加速。

那么这个功能有什么用,在什么情况下可以放弃呢?谢谢。

0 投票
1 回答
586 浏览

python - OpenCL:内核永远挂起,除非我删除参数

这是 OpenCL 1.1 ,使用英特尔 SDK (1.5 x64)。PyOpenCL 2011.2。我在 Linux (Fedora) 上。

下面的代码打印"DERP1",但没有别的。

它打印"DERP1"然后继续工作。

但是,如果我删除第一个或第二个参数(即boardor board_size),程序会停止并按[1]我的预期打印。

到底是怎么回事?我如何按照我的意思进行这项工作?


编辑: top持续报告超过 350% 的 CPU 使用率。如果我将 global_size 从board.shape(ie (10, 24)) 替换为(1,)(ie only one task in a dimension),那么我得到大约 100% 的 CPU 使用率。对我来说,这表明这一项任务一直在不停地忙循环运行,但我不知道为什么。对于这个任务,与 10*24 任务一样,如果我删除第一个或第二个参数,它就会停止。


edit2: : 我很确定这是 PyOpenCL 的问题吗?我尽可能地将示例移植到 C 中,其结果可以在此处找到,但 C 示例没有挂起。谁能发现一些差异或找出问题所在?

0 投票
1 回答
6772 浏览

opencl - clGetDeviceIDs 在 OpenCL 中失败,错误代码为 -30

以下程序在我的机器上使用 ATI Firepro V8750 的输出如下:

(这发生在调用第一个 clGetDeviceIDs 时)。返回的错误代码是-30。这意味着什么?

我无法理解为什么它无法找到该设备。我检查了 CLinfo.exe 列出了我的 GPU 以及我拥有的 Intel CPU。有人可以给我一些关于这里有什么问题的指示吗?

附加信息:

AMD 应用程序 SK 2.4

Firepro 驱动程序:8.911.3.3_VistaWin7_X32X64_135673

12-4_vista_win7_32_dd_ccc

Windows 7 另外我必须提到 firePro 驱动程序的一些组件无法安装。

这是 CLINFO 输出:GPU: 在此处输入图像描述

中央处理器: 在此处输入图像描述

为什么两个突出显示的版本不同?