ein*_*ica 3 pipeline gpgpu opencl opencl-pipes
我已经阅读了OpenCL 2.x管道API的这个描述,并通过khronos.org上的Pipe API页面引导.我觉得有点嫉妒,几乎完全在CUDA工作,这个漂亮的功能仅在OpenCL中可用(并且抱歉CUDA功能未被OpenCL正确包含,但这是一个不同的问题),所以我想我会问"如何来CUDA没有管道机制".但后来我意识到我甚至都不知道那究竟是什么意思.所以,相反,我会问:
OpenCL管道如何在AMD独立GPU/APU上运行?...
OpenCL管道与OpenCL 2.0一起引入.在GPU上,OpenCL管道就像一个具有受控访问权限的全局内存缓冲区,即您可以限制允许同时向/从管道写入/读取的工作组数量.这种允许我们重用相同的缓冲区或管道,而不必担心来自多个工作组的冲突读取或写入.据我所知,OpenCL管道不使用GPU本地内存.但是,如果您仔细调整管道的大小,则可以增加缓存命中数,从而实现更好的整体性能.关于何时应使用管道,没有一般规则.我使用管道在两个同时运行的内核之间传递数据,这样我的程序可以通过更好的缓存命中率实现更好的整体性能.这与OpenCL管道在CPU中的工作方式相同(它只是一个全局缓冲区,如果它足够小,可能适合系统缓存).但是在像FPGA这样的设备上,它们以不同的方式工作.管道利用本地存储器而不是这些设备中的全局存储器,因此与使用全局存储器缓冲器相比,实现了相当高的性能.
| 归档时间: |
|
| 查看次数: |
1535 次 |
| 最近记录: |