使用nvcc时,arch和代码选项的默认值是什么?

Aur*_*ron 11 cuda nvcc

编译CUDA代码时,必须选择生成代码的架构.nvcc提供了两个参数来指定这种架构,基本上:

  • arch指定虚拟arquictecture,其可以是compute_10,compute_11
  • code指定真实结构,其可以是sm_10,sm_11

所以这样的命令:

nvcc x.cu -arch=compute_13 -code=sm_13
Run Code Online (Sandbox Code Playgroud)

将为具有1.3计算能力的设备生成"cubin"代码.如果我错了,请纠正我.我想知道这两个参数的默认值是什么?这是默认的架构,没有值时NVCC使用 arch code 规定的?

Aur*_*ron 9

好的,我终于设法发现了默认值.我没有从NVCC文档开始到非常结束地阅读关于GPU编译的整章.所以,

nvcc x.cu
Run Code Online (Sandbox Code Playgroud)

相当于

nvcc x.cu –arch=compute_10 -code=sm_10,compute_10
Run Code Online (Sandbox Code Playgroud)

这些是默认值.编译默认执行到虚拟体系结构compute_10,a.out编译结果将包括sm_10真实体系结构的CUBIN代码,以及体系结构的PTX汇编代码,compute_10CUDA驱动程序将"及时"重新编译如果您的架构大于sm_10.

  • 默认架构[现在因CUDA版本而异](http://stackoverflow.com/questions/28932864/cuda-compute-capability-requirements),以及更新版本. (2认同)