问题标签 [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 投票
1 回答
1951 浏览

c - 在 OpenCL 内核中通过指针访问变量

我正在 OpenCL 中编写一个光线跟踪程序,并且我的内核中有一个函数 Quadratic,它接收 3 个浮点变量和两个指向浮点值的指针。

功能:

调用函数:

产生以下错误:

在试图找出问题所在时,我创建了以下似乎有效的测试函数:

据我所见,这两个函数具有相同类型的输入和输出,任何帮助将不胜感激。

0 投票
2 回答
242 浏览

casting - PyOpenCl 投射全局数据

我使用 pyOpenCl 2013.1,我的代码在 nVidia GPU、AMD CPU 和 AMD GPU 上崩溃,但在 Intel CPU 上运行。

使用 nvidia GPU,调用内核后queue.finish出现错误。

我在以下代码段的第 48 行找到了原因。

此处可执行 pyopencl.capture_call

一个丑陋的内存浪费修复方法是:分配一个本地数组,复制数据然后强制转换。但我敢肯定,我在这里做错了什么......但是什么?

谢谢你的帮助!

编辑:在 AMD 设备(CPU 和 GPU)上,它失败并显示更多信息:

0 投票
3 回答
863 浏览

opencl - 如果我找到答案,如何停止所有 262,144 个内核

我正在使用 pyopencl 在 512 x 512(262,144 像素)图像中查找某个像素。我开始(512,512),当我运行我的程序并将像素的邻居与一组已知的邻居进行比较时。我正在做图像合成。如果我在内核中找到我的像素组,我不想等待剩余的内核运行。有没有办法用内核程序终止其余正在运行的内核?

谢谢蒂姆

0 投票
2 回答
197 浏览

opencl - 从 pyopencl 内核返回一个结果

我的 pyopencl 内核程序以 (512,512) 的全局大小启动,我假设它将运行 512x512=262,144 次。我想在我的 512x512 图像中找到函数的最小值,但我不想将 262,144 个浮点数返回到我的 CPU 来计算最小值。我想运行另一个内核(可能在队列中等待)来找到所有 262,144 像素的最小值,然后将那个浮点数发送到 CPU。我认为这会更快。我的等待内核的全局大小应该是 (1,1), 吗?我希望在调用下一个内核之前,我使用 mf.COPY_HOST_PTR 创建的 262,144 大浮点缓冲区不会越过 GPU/CPU 总线。

谢谢蒂姆

0 投票
1 回答
792 浏览

opencl - pyopencl的分配错误与for循环中的简单乘法

我正在使用 pyopencl 使用 GPU 来加速我的计算,目前我对以下问题感到困惑。

我使用以下代码在 for 循环中对两个数组进行简单的乘法运算

最后三行当然做同样的事情,即乘法。但是,前两个选项会导致以下错误(我当然注释掉了其他两个):

我只是迷失了为什么前两个选项会遇到分配错误。

笔记:

GPU:[0] pyopencl.Device 'Capeverde' on 'AMD Accelerated Parallel Processing' at 0x2a76d90

我知道复杂类型的处理不正确,但是如果将它们更改为 np.float32 我仍然会遇到同样的问题。

0 投票
0 回答
46 浏览

opencl - 生成 OpenCL 名称列表

有没有办法为当前 OpenCL 版本生成变量/函数的名称列表?

例如,我想创建这样的数组:

我是否必须使用脚本来解析手册页?还是从文档中复制/粘贴?或者,还有更好的方法?

0 投票
2 回答
2174 浏览

opencl - 将全局数组的一部分复制到本地内存

我正在使用 PyOpenCL 让我的 GPU 对大型数据集进行一些回归。现在GPU比CPU慢,可能是因为有一个循环需要在每次增量期间访问全局内存(我认为......)。数据集太大,无法存储到本地内存中,但是每个循环都不需要整个数据集,所以我想将这个数组的一部分复制到本地内存中。我的问题是:我该怎么做?在 Python 中,可以轻松地分割一部分,但我认为这在 OpenCL 中是不可能的。

这是我正在使用的 OpenCL 代码,如果您发现任何更多潜在的优化,请大喊:

我是 OpenCL 的新手,所以请多多包涵。谢谢!

0 投票
1 回答
2514 浏览

python - PyOpenCL,未能设置参数。无效值

我已经让提供的 OpenCL 内核在 C 环境中执行,但是当我尝试使用 PyOpenCL 和提供的代码运行它时,我收到以下错误:

所以似乎我向内核传递了一个无效的参数,但我不知道它为什么抱怨这个。有任何想法吗?

0 投票
1 回答
4275 浏览

python - OpenCL 的编译器警告

今天一觉醒来突然得到

当我运行任何类型的 PqOpenCL 代码时,例如:

样品和部分解决方案来自这里

解决方案建议回滚 numpy,这是我从 1.8.0 到 1.7.2 所做的,但仍然是同样的问题

编辑 1

按建议添加

import os os.environ['PYOPENCL_COMPILER_OUTPUT'] = '1'

0 投票
1 回答
495 浏览

python - Pyopencl write_imagef 函数似乎没有改变 image2d_t 对象

我一直在尝试学习 OpenCL,但偶然发现了一个问题。在下面的代码中,我创建了一个空的 write_only opencl 图像对象并尝试让一个简单的内核变黑(或者至少以某种方式更改它),但是它只返回一个空图像。(我正在做一个图像卷积练习,它一直返回一个空图像,下面的代码只是试图隔离问题。)

我已经搞砸了2个多小时了,我很确定我被卡住了。