问题标签 [opencl]

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 回答
276 浏览

opencl - 找不到 clCreateSubBuffer oO

我似乎在 cl.h 或 cl.hpp 中找不到 clCreateSubBuffer(只有错误宏)。规范中提到了,对此有任何想法吗?或任何其他方式来创建一个子缓冲区?

我能想到的只是使用递增的指针重新创建缓冲区。

0 投票
2 回答
1298 浏览

opencl - 在 linux 上编译的 OpenCL 代码,在 windows 上不能编译

我最近一直在 linux 上编写一些 OpenCL 代码(ubuntu 10.4、ati Catalyst 10.4 和 ati sdk v2.1),它在 linux 上运行良好。

当我想在 Windows 上运行我的代码时,我得到程序构建错误抱怨

“此声明没有存储类或类型说明符”

然后“必须在 addrSapce 常量中声明全局变量”

即使有一个空内核也不行,地狱我评论了代码,它仍然给出了同样的错误哈哈!

很奇怪,样本 r 工作得很好。当我将代码复制到示例项目中时,它给出了相同的错误。

我正在使用 windows 7 32 位、ati stream sdk v2.1 和 v10.6 驱动程序(因为我在任何地方都找不到适用于 windows 的 10.4,这很可悲,因为 10.6 不能保证支持 OpenCL,方式去AMD大声笑!)

我把所有的内核都剪掉了,只剩下这个,我仍然遇到同样的错误,就是这样

0 投票
1 回答
2357 浏览

opencl - 在 OpenCL 中执行扫描

很长一段时间以来,我一直在尝试进行简单的扫描。对于小问题,输出是正确的,但是对于大输出,我有时会得到正确的结果。我检查了Apple 的 OpenCL 示例,我基本上在做同样的事情(除了银行冲突,我忽略了 atm)。所以这是第一阶段的代码:

以及归约函数本身:

在第二阶段,部分总和用于构建每个元素的总和:

输入被填充为本地工作大小的倍数。每个工作组可以扫描两倍大小的块。我将每个块的总和保存在 sums 数组中,用于检查结果。以下是输入大小为 4000 的 1 数组的输出:

但是,预期的结果是

如果我再次运行代码,我会得到:

对内核的调用如下:

其中全局大小为 4096,本地大小为 512。如果我将本地工作组大小限制为 64,则输出如下所示:

如果我将输入大小更改为 512 和任何块大小,一切都很好!

最后,当使用输入大小 513 和组大小 256 时(即我有两个块,每个块有 512 个元素,第二个块只有第一个元素设置为 1),第一阶段的结果是:

它应该在哪里:

我的猜测是,不同线程同时访问相同数据是一个问题,但是,情况并非如此,因为每个工作组都在处理不同的输入数据块。对此事的任何帮助将不胜感激!

0 投票
2 回答
2075 浏览

opencl - 在支持 OpenCL 的程序之间共享 GPU

有没有一种方法可以在两个独立的支持 OpenCL 的程序之间共享 GPU,或者更具体地说,在两个同时需要 GPU 执行 OpenCL 内核的独立进程之间共享 GPU?如果是这样,这是如何完成的?

0 投票
1 回答
917 浏览

opencl - 是否有支持 fp16 扩展的 OpenCL 的可用实现?

我正在寻找支持 cl_khr_fp16 扩展的 OpenCL 语言的实现。据我所知,目前没有公开可用的实现支持这一点。

0 投票
2 回答
1594 浏览

scala - OpenCL 是否适合基于代理的模拟?

我正在学习 Scala,目的是使用actor并发编写基于代理的模拟。我目前对 OpenCL 知之甚少,在我深入研究之前,谁能告诉我它是否可能适合/兼容基于代理的模拟?

如果是这样,那么ScalaCL看起来很有吸引力。

0 投票
1 回答
2474 浏览

opencl - 如何在 OpenCL 中定义函数?

如何在 OpenCL 中定义函数?我尝试为每个功能构建一个程序。它没有奏效。

0 投票
2 回答
4077 浏览

memory-management - Memory management in OpenCL

When I started programming in OpenCL I used the following approach for providing data to my kernels:

This obviously required me to partition my data in chunks, ensuring that each chunk would fit into the device memory. After performing the computations, I'd read out the data with clEnqueueReadBuffer(). However, at some point I realised I could just use the following line:

When doing this, the partitioning of the data became obsolete. And to my surprise, I experienced a great boost in performance. That is something I don't understand. From what I got, when using a host pointer, the device memory is working as a cache, but all the data still needs to be copied to it for processing and then copied back to main memory once finished. How come using an explicit copy ( clEnqueRead/WriteBuffer ) is an order of magnitude slower, when in my mind it should be basically the same? Am I missing something?

Thanks.

0 投票
4 回答
9945 浏览

opencl - 是否有任何 OpenCL 主机具有多个平台?

Khronos 的 OpenCL 1.0 和 1.1规范中的平台定义:

平台:主机加上由 OpenCL 框架管理的设备集合,允许应用程序共享资源并在平台中的设备上执行内核。

OpenCL 函数clGetPlatformIDs创建了一个平台数组,这意味着多个平台是可能的。假设给定的 OpenCL 主机只有一个平台是否安全?

换句话说,这样做我会在任何主机上丢失任何东西:

0 投票
4 回答
2499 浏览

python - Python中的GPGPU编程

我想用 Python 开始GPGPU编程。我应该从 pyopencl 还是 clyther 开始?有什么不同?