3

cudaGetDeviceProperties 具有获取计算能力的属性(major.minor),但是,我们如何让 GPU 架构(sm_**)输入到设备的编译中?

4

2 回答 2

11
  • sm_10 是计算能力 1.0 设备
  • sm_11 是计算能力 1.1 设备
  • sm_12 是计算能力 1.2 设备
  • sm_13 是计算能力 1.3 设备
  • sm_20 是计算能力 2.0 设备
  • sm_21 是计算能力 2.1 设备
  • sm_30 是计算能力 3.0 设备
  • sm_32 是计算能力 3.2 设备
  • sm_35 是计算能力 3.5 的设备
  • sm_37 是计算能力 3.7 的设备
  • sm_50 是计算能力 5.0 设备
  • sm_52 是计算能力 5.2 的设备
  • sm_53 是计算能力 5.3 的设备
  • sm_60 是计算能力 6.0 设备
  • sm_61 是计算能力 6.1 设备
  • sm_62 是计算能力 6.2 设备

sm_XY 对应于“物理”或“真实”架构

compute_ZW 对应“虚拟”架构

并非所有 sm_XY 都有对应的 compute_XY

例如,没有 compute_21(虚拟)架构

于 2013-04-25T18:34:21.373 回答
-1

最简单的方法

如果您使用的是 cuda 7.x ,请使用如下的 nvcc 标志来获得兼容性

-arch=sm_30 \
-gencode=arch=compute_20,code=sm_20 \
-gencode=arch=compute_30,code=sm_30 \
-gencode=arch=compute_50,code=sm_50 \
-gencode=arch=compute_52,code=sm_52 

如果您使用的是 cuda 8.x,请设置如下标志:

-arch=sm_30 \
-gencode=arch=compute_20,code=sm_20 \
-gencode=arch=compute_30,code=sm_30 \
-gencode=arch=compute_50,code=sm_50 \
-gencode=arch=compute_52,code=sm_52 \
-gencode=arch=compute_60,code=sm_60 \
-gencode=arch=compute_61,code=sm_61 \
-gencode=arch=compute_62,code=sm_62 \
于 2017-06-12T12:14:24.963 回答