问题标签 [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.
c - 在 OpenCL 内核中通过指针访问变量
我正在 OpenCL 中编写一个光线跟踪程序,并且我的内核中有一个函数 Quadratic,它接收 3 个浮点变量和两个指向浮点值的指针。
功能:
调用函数:
产生以下错误:
在试图找出问题所在时,我创建了以下似乎有效的测试函数:
据我所见,这两个函数具有相同类型的输入和输出,任何帮助将不胜感激。
casting - PyOpenCl 投射全局数据
我使用 pyOpenCl 2013.1,我的代码在 nVidia GPU、AMD CPU 和 AMD GPU 上崩溃,但在 Intel CPU 上运行。
使用 nvidia GPU,调用内核后queue.finish出现错误。
我在以下代码段的第 48 行找到了原因。
一个丑陋的内存浪费修复方法是:分配一个本地数组,复制数据然后强制转换。但我敢肯定,我在这里做错了什么......但是什么?
谢谢你的帮助!
编辑:在 AMD 设备(CPU 和 GPU)上,它失败并显示更多信息:
opencl - 如果我找到答案,如何停止所有 262,144 个内核
我正在使用 pyopencl 在 512 x 512(262,144 像素)图像中查找某个像素。我开始(512,512),当我运行我的程序并将像素的邻居与一组已知的邻居进行比较时。我正在做图像合成。如果我在内核中找到我的像素组,我不想等待剩余的内核运行。有没有办法用内核程序终止其余正在运行的内核?
谢谢蒂姆
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 总线。
谢谢蒂姆
opencl - pyopencl的分配错误与for循环中的简单乘法
我正在使用 pyopencl 使用 GPU 来加速我的计算,目前我对以下问题感到困惑。
我使用以下代码在 for 循环中对两个数组进行简单的乘法运算
最后三行当然做同样的事情,即乘法。但是,前两个选项会导致以下错误(我当然注释掉了其他两个):
我只是迷失了为什么前两个选项会遇到分配错误。
笔记:
GPU:[0] pyopencl.Device 'Capeverde' on 'AMD Accelerated Parallel Processing' at 0x2a76d90
我知道复杂类型的处理不正确,但是如果将它们更改为 np.float32 我仍然会遇到同样的问题。
opencl - 生成 OpenCL 名称列表
有没有办法为当前 OpenCL 版本生成变量/函数的名称列表?
例如,我想创建这样的数组:
我是否必须使用脚本来解析手册页?还是从文档中复制/粘贴?或者,还有更好的方法?
opencl - 将全局数组的一部分复制到本地内存
我正在使用 PyOpenCL 让我的 GPU 对大型数据集进行一些回归。现在GPU比CPU慢,可能是因为有一个循环需要在每次增量期间访问全局内存(我认为......)。数据集太大,无法存储到本地内存中,但是每个循环都不需要整个数据集,所以我想将这个数组的一部分复制到本地内存中。我的问题是:我该怎么做?在 Python 中,可以轻松地分割一部分,但我认为这在 OpenCL 中是不可能的。
这是我正在使用的 OpenCL 代码,如果您发现任何更多潜在的优化,请大喊:
我是 OpenCL 的新手,所以请多多包涵。谢谢!
python - PyOpenCL,未能设置参数。无效值
我已经让提供的 OpenCL 内核在 C 环境中执行,但是当我尝试使用 PyOpenCL 和提供的代码运行它时,我收到以下错误:
所以似乎我向内核传递了一个无效的参数,但我不知道它为什么抱怨这个。有任何想法吗?
python - OpenCL 的编译器警告
今天一觉醒来突然得到
当我运行任何类型的 PqOpenCL 代码时,例如:
样品和部分解决方案来自这里
解决方案建议回滚 numpy,这是我从 1.8.0 到 1.7.2 所做的,但仍然是同样的问题
编辑 1
按建议添加
import os
os.environ['PYOPENCL_COMPILER_OUTPUT'] = '1'
python - Pyopencl write_imagef 函数似乎没有改变 image2d_t 对象
我一直在尝试学习 OpenCL,但偶然发现了一个问题。在下面的代码中,我创建了一个空的 write_only opencl 图像对象并尝试让一个简单的内核变黑(或者至少以某种方式更改它),但是它只返回一个空图像。(我正在做一个图像卷积练习,它一直返回一个空图像,下面的代码只是试图隔离问题。)
我已经搞砸了2个多小时了,我很确定我被卡住了。