GPU 计算能力(Compute Capability)那些事儿 以及 编译caffe/pytorch/tensorflow时怎样设置计算能力?

news/2024/12/3 0:27:03/

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

关于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编程模型,咱们后文详谈…

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


http://www.ppmy.cn/news/307017.html

相关文章

NVIDIA 不同显卡对应的GPU计算能力

Fermi (CUDA 3.2 until CUDA 8) (deprecated from CUDA 9): SM20 or SM_20, compute_30 – Older cards such as GeForce 400, 500, 600, GT-630Kepler (CUDA 5 and later): SM30 or SM_30, compute_30 – Kepler architecture (generic – Tesla K40/K80, GeForce 700, GT-730…

近距离看GPU计算(2)

在《近距离看GPU计算》系列第一篇里我们介绍了GPU的一些基础知识及其如何从图形加速设备演化到通用计算平台。本文我们会具体从处理单元设计和存储层次结构两个方面探讨GPU不同于CPU的特点,再次确认我们反复申明的GPU更重视整体的Throughput而CPU更在乎具体任务的La…

C# 调用GPU计算(Alea库、英伟达GPU)

关于C#调用GPU计算&#xff0c;下面是stackoverflow的一段总结&#xff1a; 链接&#xff1a;<https://stackoverflow.com/questions/375011/utilizing-the-gpu-with-c-sharp> &#xff1a; Most of these answers are quite old, so I thought Id give an updated sum…

Tensorflow多GPU计算

下面的代码都是在tensorflow版本 1.8 运行的Tensorflow 使用GPU训练的时候一个小说明 1. tensorflow 默认占满所有可用GPU 2. 如果一台机器上有多个GPU&#xff0c;那么默认只会有第一块GPU参与计算&#xff0c;其余的会白白浪费掉单机单卡 常规操作&#xff0c;省略单机多卡…

boost.compute使用gpu计算(c++)

boost.compute https://github.com/boostorg/compute 编译错误 cl.h找不到 下载opencl的头文件&#xff0c;icd&#xff08;源码&#xff09;和demo https://gitee.com/zhanghe666/OpenCL-Headers.git https://gitee.com/zhanghe666/OpenCL-ICD-Loader.git https://gitee.co…

GPU平台并行计算

1、GPU架构概述 GPU是一种众核架构&#xff0c;非常适合解决大规模的并行计算。GPU是CPU的协处理器&#xff0c;必须通过PCIe总线与基于CPU的主机&#xff08;Host&#xff09;相连来进行操作&#xff0c;形成异构架构&#xff0c;如下图所示。其中CPU为主机端&#xff08;Hos…

Windows系统下实现Fortran语言的GPU计算

1.安装 visual studio2015ivf2017update4 2.安装Windows SDK 10&#xff0c;这一步取决于第三步安装PGI时是否提示需要安装WindowsSDK 3.安装PGI CE 18.4 注意事项&#xff1a; 1.三个软件必须安装在同一个盘下&#xff0c;否则安装后的PGI CE 无法编译。因为Windows10 SD…

CUDA学习笔记 —— (三)GPU计算性能与线程关系

文章目录 概述CPU运行GPU运行单线程GPU 1block 多线程运行多block多线程结果比对 概述 我们通过一个例子&#xff0c;相同的计算&#xff0c;我们分别在CPU&#xff0c;GPU单线程&#xff0c;GPU单block多线程&#xff0c;GPU多block多线程来运行对比。看GPU是如何大幅提升运算…