我使用CUDA 4.0 arch.,带有Compute_Capability 2.0设备(GTX460).'cubin'和'ptx'文件有什么区别?我认为cubin是gpu的本机代码,所以这是拱门.具体而言,ptx是一种通过JIT编译在Fermi设备(例如Geforce GTX 460)上运行的中间语言.当我编译cu源时,我可以在ptx或cubin目标之间进行选择.如果我想要cubin文件,我选择"code = sm_20".但如果我想要一个ptx文件,我会使用"code = compute_20".这是对的吗?
Tom*_*Tom 17
您已经混淆了选项以选择编译阶段(-ptx和-cubin)以及控制哪些设备目标(-code)的选项,因此您应该重新访问文档.
NVCC是NVIDIA编译器驱动程序.的-ptx和-cubin选项用于选择编译的特定阶段,在默认情况下,没有任何特定的相位的选项NVCC将试图产生与输入的可执行文件.大多数人使用该-c选项使nvcc生成一个目标文件,该文件稍后将由默认平台链接器链接到可执行文件中,-ptx并且-cubin选项仅在您使用Driver API时才真正有用.有关中间阶段的更多信息,请查看安装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=即位)的所有设备,并将code=compute_xxsm_yy和sm_zz的PTX()以及特定于设备的二进制文件嵌入到最终的fat二进制文件中.| 归档时间: |
|
| 查看次数: |
11353 次 |
| 最近记录: |