问题标签 [opencl-pipes]
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.
opencl - OpenCL 2.x 管道 - 它们实际上是如何工作的?
我已经阅读了 OpenCL 2.x 管道 API 的描述,并通过khronos.org上的管道 API 页面进行了介绍。我有点嫉妒,几乎完全在 CUDA 中工作,这个漂亮的功能只在 OpenCL 中可用(很抱歉,CUDA 功能没有被 OpenCL 正确包含,但这是一个不同的问题),所以我想我会问“如何来吧 CUDA 没有管道机制”。但后来我意识到我什至不知道这到底意味着什么。所以,相反,我会问:
OpenCL 管道如何在 AMD 独立 GPU / APU 上工作?...
- 什么信息写在哪里?
- 使用管道如何影响内核工作组到内核的调度?
- 管道内核是否一起编译(例如,它们的 SPIR 形式)?
- 管道的使用是否允许通过特定于内核的缓存(OpenCL 术语中的“本地内存”,CUDA 术语中的“共享内存”)在不同内核之间传递数据?那将是真棒。
- 一般来说,管道是否“应该”在 GPU 上工作?即API作者设想甚至写成的东西?
- OpenCL 管道如何在基于 CPU 的 OpenCL 实现中工作?
opencl - 使用 OpenCL 管道时内核挂起
我正在尝试编写一个使用 OpenCL 管道的 OpenCL 内核。内核代码如下。
但是 work_group_reserve_write_pipe 函数总是失败,因此内核在 while 循环中挂起。如果我删除了这个 while 循环,那么代码不会挂起,但不会写入管道。有人能告诉我为什么会这样吗?
该管道被声明为 _write_only 管道。
opencl - 英特尔 CPU 上的 OpenCL 管道
我正在研究我的论文项目,试图研究 OpenCL 管道的使用是否以及何时在 CPU 上也有用(我们已经知道它们在 FPGA 中被广泛使用)。
我正在尝试实现最简单的算法,其中我有一个生产者(写入管道)和一个消费者内核(从管道读取)。我想并行执行两个内核并对管道具有阻塞行为(仅在管道不为空时读取)。阅读Intel_FPGA_Opencl上的英特尔文档,解释了为管道声明的属性__attribute__((blocking))
应该在管道为空时阻止读取操作。但是,当我尝试使用我得到的属性时__write_pipe_2_bl is undefined
。我什至尝试使用 while 循环来模拟阻塞行为(如 intel 文档中所示),但即使管道不为空,内核也会停止。
此外,除非我使用两个不同的命令队列,否则内核似乎不会并行运行。
内核代码:
主机代码:
这就是我正在使用运行“clinfo”的 CPU 得到的信息: