我目前正在编写一个 OpenCL 内核(但我想在 CUDA 中会是一样的),目前我正在尝试针对 NVidia GPU 进行优化。
我目前在我的内核中使用 63 个寄存器,这个内核非常大,所以它使用了所有的 GPU 寄存器。我正在寻找一些方法来:
1)查看哪些变量在寄存器中,哪些在全局内存中(因为如果我没有足够的寄存器,编译器似乎将变量保存在全局内存中)。
2)有没有办法指定哪个变量更重要(或者哪个应该在寄存器中)。因为我使用了一些存在但较少使用的变量。一种给予优先权的方法?
当我们已经使用所有寄存器时,还有其他优化策略吗?
顺便说一句:我也尝试阅读 PTX 代码并搜索所有“.reg”关键字,但问题是 PTX 不可读,我不知道哪个寄存器用于我的代码中的哪个变量。我还没有找到任何联系方式!
谢谢