CUDA PTX类似于汇编,因此揭示了源代码.我已经阅读了在线CUDA编译器文档中的CUDA编程指南的3.1节和3.2.7节.我对-arch与-code编译器选项有基本的了解.
如果我理解正确,指定-arch compute_XX会生成PTX.而代码sm_XX 同时生成 PTX和cubin.
我只想要Cubin,这样在得到的图像中没有PTX.我怎样才能做到这一点?
最好通过Visual Studio设置,虽然我只在Visual Studio项目设置中找到-gencode选项.
PTX与装配不太相似.PTX是程序的中间表示,可以编译为Nvidia GPU随时间使用的不同的,不兼容的指令集架构(ISA).通常,用于Nvidia GPU的新ISA附带更新版本的PTX,可以代表ISA的新功能.
-arch和-code选项nvcc 略微不同的方式工作,以你的描述.它们不是(互斥的)替代品,而是决定不同的方面.-arch控制哪个PTX版本用作中间表示.因此,它与compute_XXPTX版本结合使用.-code控制嵌入到结果二进制文件中的代码 - 如果在-code sm_XX表单中使用指定的ISA的机器代码,或者如果-code compute_XX指定则由GPU驱动程序进行即时编译.-arch sm_XX将指定的ISA 和 PTX代码的编译代码嵌入到二进制文件中 - 这可能是您要引用的情况.-gencode选项允许您指定多个-arch/ -code对,结果二进制包含每个对的单独代码.nvprune从二进制文件中删除除所需ISA代码之外的所有代码.cuobjdump来检查特定二进制文件中的内容.因此,防止任何PTX代码出现在生成的二进制文件中的方法是将nvcc调用为nvcc -arch compute_XX -code sm_XX(或将多个这样的对一起使用-gencode).
| 归档时间: |
|
| 查看次数: |
409 次 |
| 最近记录: |