每日一歌,分享好心情: 你莫走

关于nvidia计算能力的一切,看完这篇文章足够用了…

一、常见gpu卡计算能力查询

https://developer.nvidia.com/cuda-gpus#compute
部分gpu计算能力:
在这里插入图片描述

二、计算能力是什么东东

  1. 计算能力(Compute Capability)并不是指gpu的计算性能
  2. nvidia发明计算能力这个概念是为了标识设备的核心架构、gpu硬件支持的功能和指令,因此计算能力也被称为“SM version"。
    计算能力包括主修订号X和次修订号Y来表示, 主修订号标明核心架构,次修订号标识在此核心架构上的增量更新。
  3. 计算能力版本号与CUDA版本号(例如CUDA7.5、CUDA8等)不能混淆,cuda是一个软件平台,新版本的cuda通过增加默认支持的计算能力进而支持nv新推出的gpu硬件。

下图是来自英伟达官方说明:
在这里插入图片描述

三、编译常见后端时怎么设置计算能力(亲测有效)

在编译caffe/pytorch…这些后端时都有默认的计算能力,但通常不满足我们的使用要求,需要自己设置计算能力以达到最好的性能。

  1. 编译tensorflow c++接口设置计算能力
    《Tensoflow c++ so编译 基于bazel》 中有说明,不再赘述。
  2. 编译pytorch c++接口设置计算能力
    pytorch源码: https://github.com/pytorch/pytorch
    pytorch在编译过程中使用了环境变量TORCH_CUDA_ARCH_LIST,在编译前设置此变量即可
    例如:
export TORCH_CUDA_ARCH_LIST="7.0;7.5;8.6" #设置计算能力
python3 ../tools/build_libtorch.py  #开始编译

在Readme.md中有关于这个变量的说明,值得注意的是pytorch默认支持gpu
在这里插入图片描述
详情请查阅源码 中的setup.py 文件。

  1. 编译TensorRT c++接口设置计算能力
    增加编译选项 GPU_ARCHS
export TRT_RELEASE=/TensorRT-8.2.1.8 #设置TRT未开源包地址,需要提前下载
cmake .. -DTRT_LIB_DIR=$TRT_RELEASE/lib -DTRT_OUT_DIR=`pwd`/out -DBUILD_PLUGINS=ON -DBUILD_PARSERS=ON -DGPU_ARCHS="70 75 80 86"
make -j
  1. 编译caffe c++接口设置计算能力
    caffe源码: https://github.com/BVLC/caffe/blob/master/cmake/Cuda.cmake
    在caffe 源码目录下的 cmake/Cuda.cmake文件中设置计算能力:
    在这里插入图片描述

我们可以在编译之前设置

export CUDA_ARCH_NAME=All
#然后再修改./cmake/Cuda.cmake文件中的Caffe_known_gpu_archs变量即可

在这里插入图片描述

四、进阶

编译时设置的计算能力列表是怎么起作用的?
在计算能力为7.5的编译计算机上是怎么编译出能够支持计算能力为8.6的软件程序的?
是交叉编译吗?
这个问题涉及到了cuda编程模型,咱们后文详谈…

今天就到这儿,干饭,走起~

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐