全球大名鼎鼎的三家芯片公司:英伟达NVIDIA、英特尔intel、AMD。英伟达主要生产图形处理器即GPU。英特尔则主要生产CPU,其CPU性能一直是最强的。AMD则是两者的结合,即生产CPU也生产GPU。
CUDA则是由NVIDIA开发的一款新的操作GPU计算的硬件和软件架构,将GPU视作一个数据并行计算设备,而且无须将计算映射到图形API。
1、CPU和GPU组成
CPU(Central Processing Unit, 中央处理器):计算机的运算核心和控制核心,主要功能为解释计算机指令以及处理计算机软件中的数据。遵循冯诺伊曼架构。
冯诺伊曼架构:
GPU(Graphic Processing Unit,图形处理器):专门用于图形信号处理的单芯片处理器(现在可用于大规模并行计算等多个领域),分担了部分原本属于CPU的工作。(主要是并行计算部分)
2、CPU和GPU组成
CPU主要包括运算器(Arithmetic and Logic Unit,ALU)、控制单元(Control Unit,CU)、寄存器(Register)、高速缓存器(Cache)和通信的数据、控制及状态总线。
GPU则由许多计算单元和超长流水线组成适合处理大量类型统一的数据。
CPU与GPU结构对比:
3、CPU与GPU区别
CPU擅长统领全局等复杂操作(脑力劳动),而GPU擅长对大量数据进行简单重复操作(体力劳动)。
4、CPU单核和多核
单核即CPU集成了一个运算核心,任务执行时需要一个一个排队。
多核即CPU集成了多个运算核心,相当于多个CPU同时工作,可以同时执行多个线程任务,或者单个任务由多个CPU同时执行。但内存等资源通常是共用的,当需要处理的负载较大时,资源可能会彼此冲突。
5、CPU的核心数和线程数
核心数:指物理上,即硬件上存在着几个核心。
线程数:逻辑上的概念,即模拟出的CPU核心数。
例如可以通过一个CPU核心模拟出2线程的CPU,这个单核心的CPU就具备了一个类似双核心CPU的功能。像Intel酷睿CPU的核心有的就是四核八线程的。通过超线程技术使一个核心可以对应两个线程后,该核心可以同时运行两个线程。
6、GPU显存
GPU显存:暂时存储GPU要处理的数据和处理完毕的数据,显存容量大小决定GPU能够加载的数据量大小。
深度学习训练场景下,显存容量决定一次能加载训练数据的量(包括模型的大小,神经元的权重参数等都储存于显存),在使用大模型训练或数据量大时,显存尤为重要。
7、CUDA
CUDA全称Computer Unified Device Architecture(计算机统一设备架构),是一种并行计算架构,使显卡可以用于图像渲染和计算以外的目的(例如通用并行计算)。
CUDA使软件开发人员可以在NVIDIA的GPU上进行并行编程,可将CPU程序修改为GPU并行程序。
8、CUDA计算模型(步骤)
CUDA计算模型中,程序分为两部分:主机(Host)端和设备(Device)端。主机端是在CPU上执行的程序部分,设备端是在GPU上执行的程序部分。内核(Kernel)是设备端程序的另一种叫法。
一般情况下,CPU执行主机端的程序会准备好数据并将其复制进显卡内存中,然后设备端程序由GPU执行完后,主机端程序会将生产的数据结果从显卡内存中取回。
9、CUDA程序架构
CUDA程序构架分为两部分:主机和设备。(主机指CPU,设备指GPU)。在CUDA架构中,主程序由CPU执行,当遇到数据并行处理的部分,CUDA会将程序编译成GPU能执行的程序,并传送到GPU。这个程序在CUDA力被称作核(Kernel)。CPU负责程序中串行部分,GPU则负责并行计算任务的处理,主机和设备端调用不同的处理单元。
10、CUDA常见概念、术语表
CPU | GPU | 层次 |
算术逻辑和控制单元 | 流处理器(SM) | 硬件 |
算术单元 | 批量处理器(SP) | 硬件 |
进程 | Block | 软件 |
线程 | Thread | 软件 |
调度单位 | Warp | 软件 |
11、CUDA函数
CUDA还指基于扩展C编程语言的只管和可扩展编程模型,将CPU和GPU(所谓的主机和从机)统一到异构计算系统中
CUDA-C包含3种类型的函数:
(1)主机函数:调用、执行都仅由主机端完成
(2)内核函数:定义时加上_global_限定符,主机端调用,设备端执行
(3)设备函数:定义时加上_device_限定符,仅由设备端调用、执行。