您将选择编译阶段的选项 (-ptx
和-cubin
) 与控制目标设备的选项( ) 混合在一起-code
,因此您应该重新访问文档。
NVCC 是 NVIDIA 编译器驱动程序。-ptx
和-cubin
选项用于选择编译的特定阶段,默认情况下,没有任何特定于阶段的选项 nvcc 将尝试从输入生成可执行文件。大多数人使用该-c
选项使 nvcc 生成一个目标文件,该文件稍后将通过默认平台链接器链接到可执行文件中,只有在使用驱动程序 API 时,-ptx
and-cubin
选项才真正有用。有关中间阶段的更多信息,请查看安装CUDA Toolkit时安装的 nvcc 手册。
- 的输出
-ptx
是纯文本 PTX 文件。PTX 是 NVIDIA GPU 的中间汇编语言,尚未完全优化,稍后将被汇编为特定于设备的代码(例如,不同的设备具有不同的寄存器计数,因此完全优化 PTX 将是错误的)。
- 输出
-cubin
是一个胖二进制文件,它可能包含一个或多个特定于设备的二进制图像以及(可选)PTX。
您所指的-code
论点完全具有不同的目的。我鼓励您查看包含几个示例的 nvcc 文档,通常我会建议使用该-gencode
选项,因为它允许更多控制并允许您在一个二进制文件中定位多个设备。举个简单的例子:
-gencode arch=compute_xx,code=\'compute_xx,sm_yy,sm_zz\'
导致 nvcc 以所有具有计算能力 xx(arch=
即位)的设备为目标,并将 PTX ( code=compute_xx
) 以及 sm_yy 和 sm_zz 的设备特定二进制文件嵌入到最终的胖二进制文件中。