OpenCL中是否有任何warp投票功能?

时间:2012-07-11 17:05:34

标签: cuda opencl

在CUDA中,__ballot()__any()__all()__popc()和一系列lanemask函数可以跨所有通道执行warp投票操作(通常大小为32)在经线内。我想知道在OpenCL中是否实现了在一个wavefront中执行相同操作的任何此类功能。如果没有这样的功能,我可能需要将它们实现为内联函数,以便在我的项目中使用。

2 个答案:

答案 0 :(得分:3)

根据OpenCL v. 1.1 specification,第6.11节"内置函数",我认为答案是否定的。

然而,在NVIDIA GPU上,您可以使用内联PTX来实现这些功能(或至少this blogger was able to use inline PTX)。

答案 1 :(得分:2)

实际上查看OpenCL subgroups。它们定义了一些跨车道功能,如sub_group_all()sub_group_any()以及其他有趣的东西。

小组是一个相对较新的生物,我不确定是谁都支持它。英特尔GPU实现(实际上是扩展)有一些更有趣的shuffling functions来置换通道(在寄存器文件中)以及进行显式的块写入和读取。我敢打赌AMD也支持子组,但我不确定NVidia。