CUDA ptxas 的 --abi-compile=yes 选项有什么作用(哪些成本寄存器)?

What does the --abi-compile=yes option of CUDA ptxas do (which costs registers)?

NVIDIA CUDA 的 PTX 优化汇编程序,ptxas,有以下选项:

--abi-compile <yes|no>                              (-abi)                      
        Enable/Disable the compiling of functions using ABI.
        Default value:  'yes'.

那是什么 ABI?当您禁用它时会发生什么? 似乎 导致使用的寄存器更少,嗯...

(受 this GTC 2011 presentation 启发的有关寄存器溢出的问题。)

一个应用程序二进制接口描述了如何调用函数如何与库接口等。它允许的是例如有一堆函数调用使得能够从内核调用内核,link 库。所有这些功能都会花费一些寄存器(维护堆栈帧)。 ABI 是使现代软件工作的原因,程序员通常不能选择退出它们。

您仍然可以关闭 abi(并保存一些寄存器),但请记住,link将外部函数作为 printf() 将不再起作用。

Here 是关于 ABI 和 ptxas 官方 CUDA 文档 的 link。它会回答你所有的问题。