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启发的关于注册溢出的问题。)
答案 0 :(得分:4)
应用程序二进制接口描述如何调用函数如何与库等接口。它允许的是例如具有一堆函数调用,例如,可以从内核,链接库调用内核。所有这些功能都需要花费一些寄存器(对堆栈帧进行填充)。 ABI是使现代软件工作的原因,程序员通常不能选择退出它们。
您仍然可以关闭abi(并保存一些寄存器),但请记住,将外部函数链接为printf()将不再起作用。
Here是关于 ABI和ptxas 的官方CUDA文档的链接。它会回答你的所有问题。