我编写了一个 CUDA 库,有没有办法专门在某些库内核上设置寄存器上限,而不是在库内的所有内核上设置寄存器上限?
最佳答案
在 C 代码级别没有。您可以使用 __launch_bounds__ 关键字指定每个 block 的线程的预期上限,这可能会导致编译周期期间每个线程的寄存器上限。或者,如果编译为 PTX,则可以将 .maxnreg
引入内核前导码。
CUDA 5 现在支持单独编译并具有设备代码链接器,因此还应该可以使用不同的编译器参数将内核编译为不同的设备对象文件,然后将它们链接到您的库对象中。
关于cuda - 是否有宏来定义特定内核可以使用的最大寄存器数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18074149/