GPU硬件知识和基础概念 : AI时代程序员都应该了解的GPU基础知识

4 篇文章 38 订阅
订阅专栏
4 篇文章 9 订阅
订阅专栏
2 篇文章 0 订阅
订阅专栏

金融建模、自动驾驶、智能机器人、新材料发现、脑神经科学、医学影像分析…人工智能时代的科学研究极度依赖计算力的支持。提供算力的各家硬件芯片厂商中,最抢镜的当属英伟达Nvidia了。这家做显卡起家的芯片公司在深度学习兴起后可谓红得发紫,如果不聊几句GPU和英伟达,都不好意思跟别人说自己是做人工智能的。那么,英伟达的GPU是如何加速计算呢?本系列将介绍GPU计算加速的一些基础知识:

  1. GPU硬件知识和基础概念:包括CPU与GPU的区别、GPU架构、CUDA软件栈简介。
  2. GPU编程入门:主要介绍CUDA核函数,Thread、Block和Grid概念,并使用Python Numba进行简单的并行计算。
  3. GPU编程进阶:主要介绍多核配置和存储管理。
  4. GPU编程实践:使用Python Numba解决复杂问题。

微信公众号

什么是GPU

GPU全名为Graphics Processing Unit,又称视觉处理器、图形显示卡。GPU负责渲染出2D、3D、VR效果,主要专注于计算机图形图像领域。后来人们发现,GPU非常适合并行计算,可以加速现代科学计算,GPU也因此不再局限于游戏和视频领域。

游戏

CPU和GPU

现代CPU处理数据的速度在纳秒级别,为何还要使用GPU来加速?CPU能被GPU替代吗?

对于计算机体系不了解的朋友可以先阅读我之前的文章,有助于你理解下面的一些概念。

无论是CPU还是GPU,在进行计算时,都需要用核心(Core)来做算术逻辑运算,比如加减乘与或非等。核心中有ALU(逻辑运算单元)和寄存器等电路。在进行计算时,一个核心只能顺序执行某项任务。不可能“吃着火锅唱着歌”,因为吃饭唱歌都占着嘴呢。所以为了同时并行地处理更多任务,芯片公司开发出了多核架构,只要相互之间没有依赖,每个核心做自己的事情,多核之间互不干扰,就可以达到并行计算的效果,极大缩短计算时间。

CPU vs GPU

个人桌面电脑CPU只有2到8个CPU核心,数据中心的服务器上也只有20到40个左右CPU核心,GPU却有上千个核心。与CPU的核心不同,GPU的核心只能专注于某些特定的任务。知乎上有人把CPU比作大学教授,把GPU比作一个学校几千个小学生:同样是做加减法,几千个小学生所能做的计算,远比几十个大学教授要多得多。俗话说,三个臭皮匠,顶一个诸葛亮。大学教授的知识结构和个人能力远强于小学生,能独立解决复杂问题,小学生的知识有限,只能进行简单的计算。目前来看GPU在处理简单计算任务上有更大的优势,但是主要还是靠人海战术,并不能像CPU那样可以独当一面,短时间内也无法替换掉CPU。如下图所示,在整个计算机系统中,CPU起到协调管理的作用,管理计算机的主存、硬盘、网络以及GPU等各类元件。

计算机体系示意图
如果只关注CPU和GPU,那么计算结构将如下图所示。CPU主要从主存(Main Memory)中读写数据,并通过总线(Bus)与GPU交互。GPU除了有超多计算核心外,也有自己独立的存储,被称之为显存。一台服务器上可以安装多块GPU卡,但GPU卡的发热量极大,普通的空调系统难以给大量GPU卡降温,所以大型数据中心通常使用水冷散热,并且选址在温度较低的地方。
CPU与GPU
GPU核心在做计算时,只能直接从显存中读写数据,程序员需要在代码中指明哪些数据需要从内存和显存之间相互拷贝。这些数据传输都是在总线上,因此总线的传输速度和带宽成了部分计算任务的瓶颈。也因为这个瓶颈,很多计算任务并不适合放在GPU上,比如笔者这两年关注的推荐系统虽然也在使用深度学习,但因为输入是大规模稀疏特征,GPU加速获得的收益小于数据互相拷贝的时间损失。当前最新的总线技术是NVLink,IBM的Power CPU和英伟达的高端显卡可以通过NVLink直接通信。同时,单台机器上的多张英伟达显卡也可以使用NVLink相互通信,适合多GPU卡并行计算的场景。

nvlink
Intel的CPU目前不支持NVLink,只能使用PCI-E技术,如下图所示。NVLink和PCI-E都是总线技术的一种。
CPU通过PCI-E与GPU通信
由于CPU和GPU是分开的,在英伟达的设计理念里,CPU和主存被称为Host,GPU被称为Device。Host和Device概念会贯穿整个英伟达GPU编程。
以上结构也被称为异构计算:使用CPU+GPU组合来加速计算。世界上顶尖的数据中心和超级计算机均采用了异构计算架构。例如超越天河2号成为世界第一的超级计算机Summit使用了9216个IBM POWER9 CPU和27648个英伟达Tesla GPU。

GPU架构

英伟达不同时代产品的芯片设计不同,每代产品背后有一个架构代号,架构均以著名的物理学家为名,以向先贤致敬。当前比较火热的架构有:

  • Turing 图灵

    • 2018年发布
    • 消费显卡:GeForce 2080 Ti
  • Volta 伏特

    • 2017年末发布
    • 专业显卡:Telsa V100 (16或32GB显存 5120个核心)
  • Pascal 帕斯卡

    • 2016年发布

    • 专业显卡:Telsa P100(12或16GB显存 3584个核心)

Pascal架构
在英伟达的设计里,多个小核心组成一个Streaming Multiprocessor(SM),一张GPU卡有多个SM。从“multiprocessor”这个名字上也可以看出SM包含了多个处理器。实际上,英伟达主要以SM为运算和调度的基本单元。上图为当前计算力最强的显卡Tesla V100,密密麻麻的绿色小格子就是GPU小核心,多个小核心一起组成了一个SM。
V100 SM
单个SM的结构如图所示。可以看到一个SM中包含了:

  • 针对不同计算的小核心(绿色小格子),包括优化深度学习的TENSOR CORE,32个64位浮点核心(FP64),64个整型核心(INT),64个32位浮点核心(FP32)。

  • 计算核心直接从寄存器(Register)中读写数据。

  • 调度和分发器(Scheduler和Dispatch Unit)。

  • L0和L1级缓存。

前面提到的以物理学家命名的是英伟达各代GPU的架构代号。对于消费者而言,英伟达主要有两条产品线:

  • 消费级产品 GeForce系列:GeForce 2080 Ti…
  • 高性能计算产品 Telsa系列:Telsa V100、Telsa P100、Telsa P40…

软件生态

英伟达能够在人工智能时代成功,除了他们在长期深耕显卡芯片领域,更重要的是他们率先提供了可编程的软件架构。2007年,英伟达发布了CUDA编程模型,软件开发人员从此可以使用CUDA在英伟达的GPU上进行并行编程。在此之前,GPU编程并不友好。CUDA简单到什么程度?有经验的程序员经过半天的培训,掌握一些基础概念后,能在半小时内将一份CPU程序修改成为GPU并行程序。

英伟达软件栈

继CUDA之后,英伟达不断丰富其软件技术栈,提供了科学计算所必须的cuBLAS线性代数库,cuFFT快速傅里叶变换库等,当深度学习大潮到来时,英伟达提供了cuDNN深度神经网络加速库,目前常用的TensorFlow、PyTorch深度学习框架的底层大多基于cuDNN库。英伟达能在人工智能时代击败Intel、AMD等强大对手,很大一部分是因为它丰富的软件体系。这些软件工具库使研发人员专注于自己的研发领域,不用再去花大量时间学习GPU底层知识。CUDA对于GPU就像个人电脑上的Windows、手机上的安卓系统,一旦建立好生态,吸引了开发者,用户非常依赖这套软件生态体系。

GPU编程可以直接使用CUDA的C/C++版本进行编程,也可以使用其他语言包装好的库,比如Python可使用Numba库调用CUDA。CUDA的编程思想在不同语言上都很相似。

CUDA及其软件栈的优势是方便易用,缺点也显而易见:

  1. 软件环境复杂,库以及版本很多,顶层应用又严重依赖底层工具库,入门者很难快速配置好一整套环境;多环境配置困难。

  2. 用户只能使用英伟达的显卡,成本高,个人用户几乎负担不起。

因此,如果没有专业的运维人员维护GPU机器,最好还是在公有云上按需购买GPU虚拟机。入门者可以考虑云厂商的Telsa P4虚拟机,大约10+元/小时,云厂商会配置好CUDA及工具库。如自己购买物理机,可以考虑消费级的GeForce 2080Ti,这张卡足以应对绝大多数自然语言处理任务。

下一篇文章将讲解CUDA编程中的基础概念,包括核函数,Thread、Block和Grid的概念等,并使用Python Numba库调用CUDA进行并行计算。

cuBridge 尝试成为GPU程序员使用一种编程语言进行开发、并且可运行在多种GPU硬件平台的解决方案
02-07
cuBridge 尝试成为GPU程序员使用一种编程语言进行开发、并且可运行在多种GPU硬件平台的解决方案。
一文搞懂GPU概念、品牌、架构
积小流成江河
04-15 1223
这么多类型的芯片,各有各的优势,也各有各的不足,协同工作才能发挥最大的效率。我们可以清晰的发现,负责计算的绿色部分占比很小,占比最多的是橙色的存储单元和黄色的控制单元,因此CPU虽然可以应对各种计算,但其最擅长的并不是计算,而是控制和管理。除了CPU、GPU、NPU,我们还听说过大脑处理器BPU、智能处理器IPU、知识处理器KPU等等,其实26个字母可能早就被用完了,除了我们刚才重点介绍的几种类型的芯片,其他的大多是个概念而已,像大脑处理器BPU就是地平线机器人公司用来命名自家芯片的一个注册商标。
GPU 基础知识整理
m0_38086244的博客
10-11 577
萌新:在接触一款硬件时我会:基础硬件结构,线程结构,内存布局,数据吞吐量,等方面进行学习:GPU 是专门设计用于并行计算硬件,通常具有大量的处理单元(CUDA核心或流处理器)。这使得 GPU 能够同时处理大量的数据和任务,适用于高度并行化的工作负载,如深度学习、科学计算和图形渲染。:GPU 在浮点运算性能上通常非常强大,可以执行大规模的浮点计算,适用于科学计算、仿真和数据分析等需要高精度计算的任务。:GPU 具有高带宽的内存,可以快速读写大量数据。
【NVIDIA GPU 入门】综述
热门推荐
ChenYX的博客
04-10 20万+
GPU作为机器学习的基础运算设备,基本上是无人不知无人不晓。可是你真的知道GPU的运行逻辑么?你真的会用GPU么?本文提供了GPU结构的背景知识、操作的执行方式以及深度学习操作的常见限制。在推理特定层或神经网络使用给定 GPU 的效率时,理解 GPU 执行的基础知识很有帮助。1. GPU的基本结构(GPU架构基础)2. 操作如何划分和并行执行(GPU 执行模型)3. 如何用算术强度估计性能限制(了解性能)4. 松散的深度学习操作类别和往往适用于每个类别的性能限制(DNN 操作类别)
GPU基本知识
qq_32565805的博客
06-29 846
一个grid可以包含多个blocks,blocks的组织方式可以是一维的,二维的或者三维的。CUDA中每一个线程都有一个唯一标识的id号threadidx,这个id随着Grid和Block的划分方式的不同而变化,这里给出Grid和Block不同划分方式下线程索引id的计算公式。CUDA的软件架构由网格(Grid)、线程块(block)和线程(thread)组成,相当于把GPU上的计算单元分为若干个网格,每个网格内包含若干个(65535)个线程块,每一个线程块包含若干个(512)个线程。
GPU和CUDA基础知识
weixin_44742084的博客
06-10 2327
显卡的作用独立显卡和集成显卡的区别NVIDIA显卡分类显卡和GPU的关系GPU的发展历程CUDACPU和GPU英伟达GPU架构显存和内存GPU能与不能CUDA并行计算流程CUDA硬件描述CUDA内存模型线程束cudaEvent
GPU编程学习入门
千人斩的博客
10-05 5401
本文使用的显卡是Nvidia,编程语言是CUDA。 本文主要是记录一下学习GPU编程的过程,在一到两天的时间里,对GPU编程思想有一个大概的认识,为将来深入学习打下基础,也对GPU编程可以解决的问题边界有一个认知,不被讲PPT的忽悠。
基于自动生成知识库的智能问答系统python源码+项目说明+数据+超详细注释.tar
11-16
2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,也适用于...
详解GPT算力账单 人人都可以是程序员
03-30
面向迄今历史上用户数量增长最快的应用ChatGPT,英伟达发布了包括硬件迭代和云服务一系列组合,核心目的之一,就是加速运算速度、极大降低成本。 ChatGPT是迄今历史上用户数量增长最快的应用 图源:英伟达发布会...
:基于java打造的深度学习框架,帮助你快速搭建神经网络,实现模型推理与训练,引擎支持自动求导,多线程与GPU运算
05-03
Omega-AI:基于java打造的深度学习框架,帮助你快速搭建神经网络,实现模型推理与训练,引擎支持自动求导,多线程与GPU运算,GPU支持CUDA,CUDNN
IDDM(工业,景观,动画…),支持DDPM, DDIM, web和多gpu分布式训练 Pytorch实现、生成模型、扩散模型、
最新发布
05-23
IDDM(工业,景观,动画…),支持DDPM, DDIM, web和多gpu分布式训练。Pytorch实现、生成模型、扩散模型、分布式训练
深度学习硬件基础:CPU与GPU
Liu Feng's Blog
08-19 5845
文章目录CPU和GPU1. CPU1. 1 CPU定义——少量复杂运算1.2 CPU组成1.3 CPU执行流程:2. GPU2.1 GPU定义——大量简单运算2.2 GPU组成3. CPU与GPU不同3.1 CPU和GP体系结构的不同:3.2 CPU显存与CPU主存的区别 CPU和GPU 不太懂硬件,关于CPU的知识还是在大学计算机中学的,没有太多的理解。这篇文章是找了很多文章进行的整理,逻辑性可能不是很强,随着在深度学习上学习和研究的让深入我也讲 1. CPU 1. 1 CPU定义——少量复杂运算
深入解析 GPU,全面讲解图形处理器技术!
m0_72410588的博客
07-25 1065
GPU 是一种专门为图形渲染和处理而设计的处理器。与 CPU(Central Processing Unit,中央处理器)相比,GPU 在处理大规模并行计算任务时具有明显优势。这是因为 GPU 包含数百甚至数千个小型计算单元,每个计算单元能够同时处理多个任务,从而加速数据处理速度。通过本文的介绍,相信你对 GPU 有了更全面的了解GPU 不仅是图形渲染的重要工具,还在科学计算、深度学习和数据分析等领域发挥着重要作用。合理利用 GPU 的并行计算能力和性能优化技巧,可以大大提高计算任务的效率。
图形基础 GPU架构(2)软件调用栈
thefist的专栏
04-09 332
GPU领域相关基础概念介绍
runafterhit的博客
11-14 2681
做图形图像领域始终绕不开对gpu相关业务接触,虽然没有直接做过gpu相关驱动项目,但是了解一些典型概念还是非常有必要的。 文章目录一、GPU基础概念GPU基本定义---GPU/GPGPU/CUDA 从图形处理器 发展 到并行计算平台GPU厂商盘点---Nvidia、AMD、Intel、ARM游戏、游戏引擎(如Unity)、图形API(如OpenGL)与 GPU(驱动driver)的关联图形API之OpenGL、Directx、Vulkan简介显卡Graphic Card与GPU关系二、GPU逻辑抽象理解涉
GPU软件体系
wufenxia的专栏
05-24 2990
CUDA的软件体系   CUDA的软件堆栈由以下三层构成:CUDA Library、CUDA runtime API、CUDA driver API,如图所示,CUDA的核心是CUDA C语言,它包含对C语言的最小扩展集和一个运行时库,使用这些扩展和运行时库的源文件必须通过nvcc编译器进行编译。             CUDA C语言编译得到的只是GPU端代码,而要管理费用GPU资源
什么是GPUGPU和显卡的关系?GPU国产化布局?
张巧龙的博客
11-07 1万+
要说有什么芯片产品最引数码达人关注,那必然是GPUGPU是个热闹异常的市场。围绕GPU/显卡玩梗也成为数码爱好者茶余饭后的一项乐趣:“超低功耗,极致色彩,曲面细分””矿卡论斤卖““一卡一栋楼,两卡毁地球,三卡银河系,四卡创世纪”。它曾一度挑战甚至超越同时期的CPU,它曾让无数游戏玩家为之疯狂,它曾向更深、更广领域延伸触角。[1]因为国外厂商长期垄断,国内对自主GPU的期盼越来越强烈。本文是“国产...
显卡、GPU、CUDA系列组件理解 & win10的pytorch-gpu版本配置过程记录
Pure_vv的博客
09-25 742
最近开始学习pytorch深度学习框架,CPU版本安装之后跑demo风雨无阻,可是想使用更牛的GPU进行训练时遇到了一些不理解的地方。 在进行环境搭建的时候,一般需要安装显卡驱动、cuda、cudnn等这些常见的组件,但是并不知道他们的作用是什么,为什么要安装这些?
人工智能利用云gpu进行情感案例分析
05-16
人工智能作为一种新技术,已经被广泛应用于各个领域。其中,情感分析是其应用之一。情感分析是指对人类文本、语言和谈话等不同形式的语言进行分析,以了解其中的情感和信息内容。为了实现情感分析,人工智能技术需要利用GPU进行加速GPU是目前最流行的一种并行计算设备,其并行计算能力极强。GPU可以大幅度提高情感分析的速度,使我们能够更快地分析大量的情感文本。通过在云GPU上运行情感分析算法,我们可以快速地分析大量的文本,并得出其中的情感和信息内容。同时,人工智能技术可以根据分析结果对情感和信息进行分类和打分,从而更好地了解其中的内容。 除了在情感分析领域中的应用,人工智能技术也可在其他领域中使用云GPU进行加速。例如,在计算机视觉领域中,利用云GPU可以更快地处理视频和图像数据,实现更高的分辨率和更精确的分类。在自然语言处理领域中,利用云GPU可以更好地处理文本数据,提高文本的准确率和速度。 总之,人工智能技术的发展已经广泛地应用于各个领域,云GPU则为其提供了更快、更精确的计算能力,使我们能够更好地解析和分析各种数据。未来,随着技术的进一步发展,人工智能技术将会在更多的领域中得到应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 中文领域最详细的Python版CUDA入门教程 54016
  • 二维卷积层入门:卷积运算、填充与步幅、输入输出通道 15116
  • 深度解析Flink flatMap算子的自定义方法(附代码例子) 5011
  • GPU硬件知识和基础概念 : AI时代程序员都应该了解的GPU基础知识 4646
  • Python Numba | 多流和共享内存CUDA优化技术介绍和代码示例 4598

分类专栏

  • 人工智能 4篇
  • 深度学习 3篇
  • 书籍推荐
  • Flink原理与实践 22篇
  • Java/Scala手册 3篇
  • 大数据 14篇
  • 流处理 5篇
  • 机器学习 2篇
  • Kafka 1篇
  • Spark 2篇
  • GPU 4篇
  • 计算加速 4篇
  • Python 3篇
  • 计算机基础 2篇

最新评论

  • Flink零基础实战教程:股票价格数据流实时处理

    2301_78827100: 请问是用scala写的还是java呢

  • 二维卷积层入门:卷积运算、填充与步幅、输入输出通道

    shaoon: 多层卷积核难道不是串行的吗

  • Python Numba | 多流和共享内存CUDA优化技术介绍和代码示例

    PepsiCola_: 矩阵乘法 cuda速度比numpy慢很多正常吗

  • Python Numba | 多流和共享内存CUDA优化技术介绍和代码示例

    qq_26608423: 可能和GPU的性能有关系,如果gpu计算的太快,那么就失去了多stream的优势,host to device好像是串行的,所以最好是有计算和拷贝都比较长的demo去执行,才能达到流水线的效果

  • Python Numba | 多流和共享内存CUDA优化技术介绍和代码示例

    qq278937623: 为什么我用1个流比10个还快

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 二维卷积层入门:卷积运算、填充与步幅、输入输出通道
  • 批量归一化(BatchNorm)加速深度网络训练
  • Flink如何解决端到端Exactly-Once的一致性
2020年17篇
2019年20篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

哆哆女性网魏的姓起名北京高端网站建设哪家好市场推广营销方案曦子起名大全小孩子取名字学习建筑设计的网站周公解梦 全文颖字起名文档网站建设超霸气个性签名电视剧排名2021最新排名魏姓男孩起名2020吕姓女孩起名字网站制作模板模板怎样起个好听的笔名常见的氮肥模型设计公司起名网站制作是什么意思免费版周公解梦大全查询起名网 女人商丘韩美办公软件起名2020张姓女孩起名起名使用歆字寓意好吗互联网推广营销外包项目开烧烤店起名起名与五行清幽周易几两命济南优化网站费用淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化