gpt4 book ai didi

cuda - OpenCL 中的 popcnt?

转载 作者:行者123 更新时间:2023-12-02 06:01:45 25 4
gpt4 key购买 nike

较新的 NVIDIA GPU 支持 __popc(x) 指令,该指令可计算 32 位寄存器中设置的位数。

我认为 99% OpenCL 不支持内联汇编器,除非它是供应商内核扩展。

1) AMD 硬件是否支持此功能? (我不知道)。

2) 对于 OS X 和 Linux,如何截获编译后的 NVIDIA 中间语言以便插入它?

我弄清楚了如何在 PyOpenCL 中转储 PTX“二进制文件”,现在我只需要弄清楚如何通过修改重新插入它。

#create the program
self.program = cl.Program(self.ctx, fstr).build()
print self.program.BINARIES[0]

最佳答案

NVIDIA 的 nvcc 支持使用“asm”关键字在 OpenCL 代码内进行内联 PTX 汇编。该表示法类似于 GCC 内联汇编。我目前使用这个:

inline uint popcnt(const uint i) {
uint n;
asm("popc.b32 %0, %1;" : "=r"(n) : "r" (i));
return n;
}

在 Ubuntu Linux 上测试并运行。

如果您想了解更多信息,请查看 NVIDIA 的 oclInlinePTX 代码示例和 PTX ISA 文档。

如果您使用的是 AMD 或 Intel 卡,则无关紧要,因为您可以仅使用 OpenCL 1.2 中的内置 popcount 指令。

关于cuda - OpenCL 中的 popcnt?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5917812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com