GPU相关知识整理——AI扫盲

GPU基础知识

GPU与CPU的区别:CPU优化单线程任务并能处理复杂的控制流程,GPU设计用于并行处理大量的相同相似任务。CPU包含少量核心,GPU包含大量核心。一个核心可以处理一个计算任务,多个核心可以并行处理多个计算任务。

多核心并行计算:是指通过在计算机的多个处理核心(CPU核心或GPU核心)之间分配和并行执行任务,以提高计算效率和处理能力。这种方式使得程序可以同时在多个核心上运行不同的计算任务,从而大大加速整体的计算过程

GPU的工作原理:流水线处理、内存优化和并行任务分配来加速图形渲染和数据计算等任务。它的设计专门针对处理重复性高、并行性强的计算任务,因此在处理图形渲染、科学计算和深度学习等领域具有明显的优势。

SIMD(单指令多数据):是一种并行计算架构,在这种架构中,多个数据元素同时执行相同的指令.例如,当你需要对一个数组中的多个数字执行相同的操作(比如加法、乘法等)时,SIMD可以通过单条指令同时处理多个数字.

流处理器(CUDA核心/Stream Processors):流处理器是GPU中的基本计算单元。它们类似于CPU的核心。在NVIDIA的GPU中,流处理器通常被称为CUDA核心,它允许开发者利用GPU的强大并行计算能力来加速应用程序。在AMD的GPU使用的术语是流处理器。

并行计算模型:1)数据并行模型 (Data Parallelism) 2)任务并行模型 (Task Parallelism) 3)流水线并行模型 (Pipelining) 4)共享内存模型 (Shared Memory Model) 5)分布式计算模型 (Distributed Computing Model)
GPU架构,一台机器多个显卡——多GPU并行。多个机器多个显卡——分布式计算

NVIDIA GPU架构:Tesla架构——首次引入GPU计算。Fermi架构——大规模并行计算、CUDA核心。 Kepler架构——能效优化、统一计算资源。Maxwell架构——动态超频、进一步提高能效。Pascal架构——大幅提升CUDA核心数、NVLink。Volta架构Tensor核心。Turing架构——实时光线追踪。Ampere架构:强化的RT核心和Tensor核心。

SM(Streaming Multiprocessor)工作原理:每个SM包含多个CUDA核心(类似于CPU中的执行单元),每个CUDA核心可以执行单独的计算任务。这些CUDA核心集体工作来加速并行计算任务,由调度器、共享内存、寄存器和纹理单元和特殊功能单元构成。线程被分配给SM,SM内多个CUDA核心并行执行线程的指令。

Tensor核心(用于深度学习加速):Tensor 核心是专为加速矩阵运算(尤其是张量操作)而设计的硬件单元,能够执行大量的 浮动点矩阵乘法和加法,并且能够高效地利用低精度计算来提高计算吞吐量。混合精度计算:前向传播使用低精度FP16、反向传播和权重更新使用高精度FP32。

RDNA架构:是AMD的GPU架构,提升性能、更高的每时钟性能等

GCN(Graphics Core Next)架构:GCN架构的推出标志着AMD在图形处理技术上的一次重大革新,重点提升了GPU的并行计算能力和效率,为图形渲染、计算密集型应用、以及异构计算提供了更强的支持

GPU内存结构:主要包括显存(是GPU主要内存,是GPU与主机内存RAM间的独立存储区域)、帧缓冲区、常量缓冲区和着色器常量、纹理内存、计算内存、寄存器、全局内存和共享内存

全局内存:用于存储大规模数据并进行并行计算。

GPU编程模型:即在所称的“CUDA”、“OpenCL”、“OpenGL”、“DirectCompute”和“Metal”等GPU编程框架下对图像渲染、科学计算以及机器学习等具体任务最大化优化计算性能。

CUDA编程
基本概念:线程、块、网格。线程:CUDA程序中的最小单元,在计算过程中独立执行计算任务。块:线程被分组到块(Block)中。每个块包含多个线程,块是一个可调度的单位,GPU会将块分配给处理单元进行执行。块中的线程共享一个共享内存。网格:多个块被组织成一个网格(Grid)。网格表示一个计算任务的整体,包含多个线程块。每个线程块可以独立地执行相同的内核函数。

内存管理与同步:内存管理——合理使用各种内存(如全局内存、共享内存、常量内存、纹理内存等)可以大大提高计算性能,线程同步——是确保多线程程序正确执行的关键,原子操作(执行中不会被其他线程打断)可以确保线程之间的安全数据访问

OpenCL编程:提供了一个平台无关的框架,用于在不同硬件上执行并行计算。通过OpenCL API,开发者可以选择平台、设备、编写内核代码并通过命令队列管理计算任务。OpenCL允许在多种硬件设备上进行并行计算,提供了一种灵活且高效的并行编程方式。OpenCL允许开发者在各种硬件设备上执行计算任务,并通过统一的编程接口来控制这些设备,从而实现跨平台的高性能计算。

数据并行和模型并行:数据并行是一种通过将数据分割成多个部分,并将这些部分分配给不同计算单元(例如不同的GPU)来并行处理的方法。模型并行将模型本身拆分成多个部分,并将这些部分分配到不同计算单元上的方法。在模型并行中,计算任务被划分为不同的“操作”或“层”,每个计算单元处理不同的层或操作,适用于模型的大小超出了单个计算单元的内存限制。在许多实际应用中,数据并行和模型并行经常被结合使用,形成混合并行策略。

NVIDIA cuDNN库:是由 NVIDIA 提供的一个高性能、用于深度学习应用的GPU加速库。它专门为深度神经网络(DNN)的训练和推理提供优化

卷积运算加速:主要通过Tensor核心优化精度计算,以及通过cuDNN自动选择最优的卷积算法

GPU性能指标:
FLOPS(每秒浮点运算数):GPU每秒能够执行多少次浮点运算
内存带宽:GPU内存和计算单元之间传输的速度
GPU利用率:GPU的实际计算能力与最大可能计算能力之间的比例
延迟与吞吐量:完成一个计算任务所需的时间。在推理应用中,低延迟至关重要
性能瓶颈分析:计算瓶颈:通常与GPU的计算能力(如FLOPS)和并行计算的效率有关。内存瓶颈:指数据访问速度较慢,特别是GPU的内存带宽无法满足大量数据传输的需求。数据传输瓶颈:主机(CPU)和设备(GPU)之间的数据传输过程中,特别是在大数据量的模型训练或推理中,数据传输的开销会占据大部分时间。核函数瓶颈:核函数(Kernel)执行时可能受到并行度、内存布局等方面的影响,导致计算性能下降。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

supernova121

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值