Nie*_*oom 0 optimization cuda instruction-set ptx
我最近通读了 CUDA 内核生成的 PTX 代码。我意识到许多寄存器仅用于存储中间值,然后就不再使用,并且 NVCC 通常似乎不太关心寄存器的重用,而是选择在几乎任何新数据点都使用新寄存器被建造。
这就提出了一个问题,是否值得手动检查 PTX 代码并尝试最大限度地减少寄存器的使用,或者 PTX VM 在运行时是否会处理这些事情?
\n\n这就提出了一个问题,是否值得手动检查 PTX 代码并尝试尽量减少寄存器的使用
\n
不会。Nvcc 故意生成静态单赋值代码。
\n\n\n还是 PTX VM 在运行时处理的事情?
\n
不存在 \xe2\x80\x9cPTX VM\xe2\x80\x9d 这样的东西。PTX 始终被编译成在硬件上运行的着色器汇编器。寄存器分配和使用优化由 PTX 代码的汇编器静态完成,该代码可以是 nvcc 调用的一部分,也可以在运行时由 GPU 驱动程序本身完成。
\n