【问题标题】:What are the default values for arch and code options when using nvcc?使用 nvcc 时,arch 和 code 选项的默认值是什么?
【发布时间】:2011-06-07 23:33:24
【问题描述】:

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

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

所以这样的命令:

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

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

【问题讨论】:

  • 如果您使用详细标志编译代码,您将看到使用的默认虚拟架构。

标签: cuda nvcc


【解决方案1】:

好的,我终于设法发现了默认值。我的错是我没有从头到尾阅读 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架构的PTX汇编代码,如果您的架构大于sm_10,CUDA 驱动程序将“及时”重新编译。

【讨论】:

【解决方案2】:

我相信默认值为compute_10,因为除非您明确指定这是您想要的,否则您不能使用任何 compute_13 功能。 (大概是CUDA工具包自带的NVCC文档指定的,但是网上找不到链接)。

【讨论】:

  • 我猜你是对的。当我查看 NVCC 文档时,我找不到该信息。反正我会再看的。
  • 嗯,-code的默认值似乎是-arch中的指定值,但是我找不到-arch的默认值。
猜你喜欢
  • 2016-11-03
  • 2020-04-11
  • 2019-01-18
  • 2022-08-05
  • 1970-01-01
  • 2021-10-16
  • 2018-06-03
  • 1970-01-01
  • 2014-12-27
相关资源
最近更新 更多