显卡计算能力及CUDA兼容性

英伟达不同系列的桌面型显卡架构,如(2009-):

显卡系列显卡架构年份参考显卡型号
100系特斯拉 ( Tesla )2009~2009GeForce GTS 150
200系特斯拉 ( Tesla )2009~2009GeForce GTX 295
300系特斯拉 ( Tesla )2009~2010GeForce GT 335
400系费米 ( Fermi )2010~2011GeForce GTX 460
500系费米 ( Fermi )2011~2012GeForce GTX 555
600系开普勒 ( Kepler )2012~2013GeForce GTX 690
700系麦克斯韦尔 ( Maxwell )2013~2014GeForce GTX 750 Ti
900系麦克斯韦尔 ( Maxwell )2014~2016GeForce GTX 960
10系帕斯卡 ( Pascal )2016~2018GeForce GTX 1080 Ti
20系图灵 ( Turing )2018~GeForce RTX 2080 Ti

显卡计算能力,如:

不同显卡架构的 CUDA 开发是的兼容性是需要考虑的。

NVIDIA CUDA C 编译器 - nvcc 用于生成指定架构的 cubin 文件和每个核的前向兼容(forward-compatible)的 PTX 版本。每个 cubin 文件链接了指定计算兼容(compute-capability)的版本,而且其前向计算兼容仅支持与之主版本号的一致的GPU架构。例如,链接了计算兼容 3.0 的 cubin 文件,支持在所有计算兼容的 3.x(Kepler架构) 设备上的运行,但,其不支持在计算兼容 5.0(Maxwell 架构) 或 6.0(Pascal架构)的设备上运行。

因此,为了确保CUDA应用发布后的GPU架构的前向计算兼容性,推荐包含核的所有 PTX 版本。

[1] - CUDA8.0

/usr/local/cuda/bin/nvcc
  -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_61,code=compute_61
  -O2 -o mykernel.o -c mykernel.cu

[2] - CUDA9.x

/usr/local/cuda/bin/nvcc 
  -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_70,code=sm_70
  -gencode=arch=compute_70,code=compute_70
  -O2 -o mykernel.o -c mykernel.cu

[3] - CUDA10.0

/usr/local/cuda/bin/nvcc 
  -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_70,code=sm_70
  -gencode=arch=compute_75,code=sm_75
  -gencode=arch=compute_75,code=compute_75
  -O2 -o mykernel.o -c mykernel.cu

相关材料

[1] - Turing Compatibility Guide for CUDA Applications

[2] - NVIDIA 显卡计算能力

Last modification:November 3rd, 2019 at 10:03 am

Leave a Comment