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

时间:2011-01-12 17:02:27

标签: cuda nvcc

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

  • arch指定虚拟arquictecture,可以是compute_10compute_11等。
  • code指定真实的架构,可以是sm_10sm_11等。

这样的命令:

nvcc x.cu -arch=compute_13 -code=sm_13

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

2 个答案:

答案 0 :(得分:8)

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

nvcc x.cu

等同于

nvcc x.cu –arch=compute_10 -code=sm_10,compute_10

这些是默认值。编译默认执行到虚拟体系结构compute_10,编译产生的a.out将包含sm_10实际体系结构的CUBIN代码,以及用于compute_10架构,如果您的架构大于sm_10,将由CUDA驱动程序“及时”重新编译。

答案 1 :(得分:2)

我认为默认值为compute_10,因为您不能使用任何compute_13功能,除非您明确指定这是您想要的。 (可能是CUDA工具包附带的NVCC文档指定,但我无法在线找到链接。)