CUDA ptxas的--abi-compile = yes选项有什么用(这会花费寄存器)?

时间:2016-02-28 22:10:03

标签: cuda gpgpu abi ptxas

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启发的关于注册溢出的问题。)

1 个答案:

答案 0 :(得分:4)

应用程序二进制接口描述如何调用函数如何与库等接口。它允许的是例如具有一堆函数调用,例如,可以从内核,链接库调用内核。所有这些功能都需要花费一些寄存器(对堆栈帧进行填充)。 ABI是使现代软件工作的原因,程序员通常不能选择退出它们。

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

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