在这里插入图片描述

GPU 基础概述:从图形渲染到 AI 与高性能计算的核心

Graphics Processing Units(GPU)已从专用的图形渲染硬件演进为 AI、科学计算与高性能任务的中坚力量。本文将介绍 GPU 架构的基础知识,包括其组成部分、内存层次结构,以及 Streaming Multiprocessors(SM)、核(cores)、warp 与程序(programs)的角色。


CPU vs. GPU:根本区别

在这里插入图片描述

CPU(中央处理单元)与 GPU(图形处理单元)都用于处理数据,但其处理方式存在根本差异:

资料来源:tutorialspoint.com

  • CPU:拥有少量强大核心,擅长顺序或有限并行任务处理。
  • GPU:包含成千上万的较小核心,设计用于大规模并行计算,适用于图像渲染、训练 AI 模型和仿真等任务。

简言之,CPU 优化通用计算任务,而 GPU 擅长同时处理大量独立的小规模计算。


GPU 的内存层次结构

在这里插入图片描述

GPU 拥有复杂的内存层次结构以最大化计算效率。主要的内存类型包括:

SRAM(Static RAM)——最快的缓存层

位于 GPU 内核内部,包含寄存器、L1 Cache 与 L2 Cache:

  • 寄存器(Registers):每个 GPU core 内的超快小内存,用于存放核心正在处理的即时值,速度最快。
  • L1 Cache:位于每个 Streaming Multiprocessor(SM)内部的一级缓存,存储常用数据以减少对慢速内存(如 DRAM)的访问。
  • L2 Cache:跨多个 SM 共享的二级缓存,用于存放不适合放入 L1 的数据,减少对外部显存(VRAM)的依赖。

重要性:寄存器、L1、L2 减少了从较慢全局内存读取数据的次数,从而加速计算,尤其对 AI 和游戏负载的性能至关重要。它们快速但容量小,因此合理利用缓存能显著提升性能。

DRAM(Dynamic RAM)——主内存(GPU 上的 VRAM)

  • 位于显卡上,作为 VRAM(Video RAM)使用。
  • 存放大量数据,如模型权重与贴图。
  • 比 SRAM 慢但容量更大,常见类型为 GDDR(Graphics DDR)。

HBM(High Bandwidth Memory)——高性能显存

  • 用于高性能 GPU(AI 与深度学习场景)。
  • 采用堆叠式(vertical stacking)设计,降低延迟并提升带宽。
  • 比 GDDR 更快,但成本更高,常见于专业 GPU。

GPU 中的数据传输成本

从 DRAM(VRAM)向 SRAM(寄存器 / L1)移动数据代价很高,因此 kernel 优化通常聚焦于最小化这种传输。高效的内存使用能显著提升 AI 与渲染任务的性能。


Streaming Multiprocessors(SMs)及其作用

在这里插入图片描述

SM 是 GPU 的基本处理单元:

  • 每个 SM 包含多个 GPU core、少量快速内存(SRAM)与执行单元。
  • 每个 SM 可以独立运行,处理多个并行程序实例。
  • GPU 中 SM 的数量直接影响其计算能力:SM 越多,理论上并行处理能力越强。

当一个程序运行在 GPU 上时,它会被拆分到多个 SM 上,每个 SM 负责处理数据的一部分。更多的 SM 通常意味着更好的并行性能。


程序、PID 与并行执行

在 GPU 中,一个**程序(program)**是内核代码的一个并行实例。每个程序:

  • 被分配一个程序 ID(PID);
  • 处理特定的数据块;
  • 使用所在 SM 的 SRAM 来高效执行计算。

每个 SM 能同时承载的 PID 数量取决于每个程序所需的 SRAM 大小:如果每个程序占用内存过多,SM 无法并行运行太多程序,效率就会下降。


核心(Cores)、Warp 与并行性

GPU 核心:最小计算单元

  • 核心是 GPU 的最小计算单元,优化用于浮点运算(FLOPs)。
  • 每个核心大多能在每个周期执行一次浮点操作。

Warp:核心的执行组

  • GPU 的核心按 warp 分组。NVIDIA 的 warp 大小为 32,AMD 通常为 64
  • 一个 warp 内的所有核心必须同时执行同一条指令,但在不同数据上运行(SIMD 风格)。
  • warp 作为一个执行单元按 lock-step(锁步)方式运行。如果工作负载的尺寸不是 warp 大小的整数倍(例如张量形状不是 32 的倍数),部分核心会空闲,导致性能下降,这种现象称为 warp divergence

建议:在张量与数据布局上尽量使用 32 的倍数(或 AMD 上的 64 倍数),以充分利用 warp 中所有核心,减少空闲与效率损失。


优化 GPU 性能的要点

  • 减少内存传输 — 尽量降低 VRAM(DRAM)与 SRAM 之间的数据搬移次数。
  • 最大化并行度 — 通过降低每个程序的内存占用,尽量让更多 PID 在同一 SM 中并行运行。
  • 为 warp 优化工作 — 在 AI 工作负载中使用 32(或 64)为单位的维度,确保 warp 内所有核心都有可做的工作。

结论

GPU 天生适合大规模并行计算,这使得它们在 AI、深度学习、游戏渲染与模拟等领域表现卓越。理解 SM、内存层次、核心、warp 与程序执行机制,有助于你为工作负载做出更合理的优化设计。无论是在训练模型还是渲染复杂场景,高效利用 GPU 都是提升速度与可扩展性的关键。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/93216.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/93216.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/93216.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

订单状态定时处理(Spring Task 定时任务)

订单状态定时处理 如果最后一秒刚好支付了咋办?如何补偿? 需要将支付状态和订单状态一起考虑,或者直接使用状态机 Spring Task 是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。 **定位:**定时任务框架 **作用:**定时自动执行某段Java代码 …

职得AI简历-免费AI简历生成工具

本文转载自:职得AI简历-免费AI简历生成工具 - Hello123工具导航 ** 一、核心功能解析 职得 AI 简历是 AI 驱动的智能求职平台,通过深度学习算法分析百万优质简历数据,提供从简历生成到面试准备的全流程服务,显著提升求职竞争力。…

8.14 机器学习(1)

机器学习基础一、什么是机器学习定义:让计算机利用大量数据在特定任务上持续改进性能的过程,可以让任务完成的更好。机器学习的领域很多。二、机器学习基本术语数据集、样本、特征(属性)、属性空间、向量表示、训练集(…

给电脑升级内存,自检太慢,以为出错

公司电脑是16G内存,用虚拟机时非常吃力。于是跟领导说,买了32G内存和1T SSD。电脑有两个SATA数据线,SATA电源头只有一个。于是买了几个1转2,顺利接上。把原来的16G拔下,换上32G内存。结果开机没反应。心里就有点嘀咕&a…

Effective C++ 条款43:学习处理模板化基类内的名称

Effective C 条款43:学习处理模板化基类内的名称核心思想:模板化基类(templatized base classes)中的名称在派生类模板中默认不可见,需要通过this->前缀、using声明或显式基类限定来引入。这是因为编译器在解析模板…

Mybatis简单练习注解sql和配置文件sql+注解形式加载+配置文件加载

项目结构 d:\test\runjar\data\static\data\mybatis_helloworld\Mybatis\ ├── lib\ │ ├── asm-3.3.1.jar │ ├── c3p0-0.9.1.2.jar │ ├── cglib-2.2.2.jar │ ├── commons-logging-1.1.1.jar │ ├── ehcache-core-2.6.8.jar │ ├── javassi…

抗日胜利80周年 | HTML页面

飞翔的和平鸽&#xff1b;屹立的人民英雄纪念碑&#xff1b;倒下的日本国旗&#xff1b;旋转的金色勋章无不代表着我们胜利了&#xff01;&#xff01;&#xff01;HTML源代码&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta cha…

web仿写网站

一、完成自己学习的官网&#xff0c;至少三个不同的页面。1、界面1&#xff08;1&#xff09;代码<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-wid…

基于element-plus和IndexedDB数据库的基础表单

本文介绍了基于Vue 3和Element Plus的表单项目配置页面实现。页面包含搜索栏、操作按钮、数据表格和分页组件&#xff0c;使用IndexedDB进行本地数据存储。主要功能包括&#xff1a;1) 通过模糊查询搜索项目&#xff1b;2) 分页显示项目数据&#xff1b;3) 添加/编辑/删除项目操…

paimon实时数据湖教程-主键表更新机制

在上一章&#xff0c;我们学习了 Paimon 如何保证每一次写入的原子性和一致性。但数据仓库的核心需求不仅是写入&#xff0c;更重要的是更新。想象一个场景&#xff1a;我们需要实时更新用户的最新信息&#xff0c;或者实时累加计算用户的消费总额。传统的 Hive 数据湖对此无能…

第十六届蓝桥杯青少组C++省赛[2025.8.9]第二部分编程题(4、矩阵圈层交错旋转)

参考程序&#xff1a;#include <bits/stdc.h> using namespace std;const int MAXN 105; int a[MAXN][MAXN];int main() {int n;if (!(cin >> n)) return 0;for (int i 0; i < n; i)for (int j 0; j < n; j)cin >> a[i][j];int layers n / 2; // 每…

【FastGTP✨】[01] 使用 FastGPT 搭建简易 AI 应用

简易应用&#xff1a;英语单词解释 例句 1. 前言 FastGPT 是一个低代码 AI 应用构建平台&#xff0c;可以通过简单配置快速创建自己的 AI 应用。 本文将带你用 FastGPT 搭建一个 英语单词解释 例句 的 AI 工具&#xff0c;输入英文单词后&#xff0c;输出&#xff1a; 单词…

【Mysql语句练习】

MysqlMysql语句练习一、建库建表二、插入数据三、查询Mysql语句练习 一、建库建表 1、创建数据库mydb11_stu&#xff0c;并使用数据库 # 创建数据库mydb11_stu mysql> create database mydb11_stu; Query OK, 1 row affected (0.00 sec) # 使用数据库 mysql> use mydb1…

用Python Scrapy征服网络爬虫(反爬技术深入剖析)

目录 第1章:Scrapy是个啥?为什么它是你爬虫路上的最佳拍档? 1.1 Scrapy的核心亮点 1.2 啥时候用Scrapy? 1.3 安装Scrapy 第2章:动手写你的第一个Scrapy爬虫 2.1 创建Scrapy项目 2.2 定义数据结构(Items) 2.3 编写爬虫逻辑 2.4 运行爬虫 2.5 小技巧:调试爬虫 …

解决Electron透明窗口点击不影响其他应用

遇到的问题&#xff1a;在electron透明窗口点击&#xff0c;影响窗口下的应用接受不到点击事件解决方案&#xff1a;CSSIgnoreMouseEvents实现原理&#xff1a;主进程默认设置禁用目标窗口鼠标事件&#xff08;禁用之后能检测到mousemove&#xff09;&#xff0c;UI进程检测页面…

C# 泛型(Generics)详解

泛型是 C# 2.0 引入的核心特性&#xff0c;它允许在定义类、接口、方法、委托等时使用未指定的类型参数&#xff0c;在使用时再指定具体类型。这种机制可以显著提高代码的复用性、类型安全性和性能。一、泛型的核心概念类型参数化泛型允许将类型作为 "参数" 传递给类…

Spring中存在两个相同的Bean是否会报错?

第一种情况&#xff1a;使用XML的方式设置Bean&#xff0c;这种情况在Spring启动时就会报错&#xff0c;因为ID在Spring中是Bean的唯一标识&#xff0c;Spring容器在启动时会校验唯一性&#xff0c;一旦发现重复就会报错。但是如果是在两个不同的XML文件中定义两个相同的Bean&a…

【新手入门】Android基础知识(一):系统架构

目 录 Android 系统架构图 1. 应用 2. JAVA API 框架 3. 原生 C/C 库 4. Android 运行时&#xff08;Android Runtime&#xff09; 5. 硬件抽象层 (HAL) 6. Linux 内核 参考资料 Android 系统架构图 Android底层内核空间以Linux Kernel作为基石&#xff0c;上层用户空…

晶振电路的负载电容、电阻参数设计

系列文章目录 文章目录系列文章目录前言一、晶振主要参数二、有源与无源区别三、无源晶振四、有源晶振总结前言 在硬件电路的设计中&#xff0c;晶振电路是必不可少的&#xff0c;它充当了整个电路心脏的作用。在这个晶振电路的设计中负载电容、电阻参数的选型是很重要的&…

电脑上练打字用什么软件最好:10款打字软件评测

现在孩子们在电脑上练打字&#xff0c;软件一搜一大把&#xff0c;可好多家长和老师都犯愁&#xff1a;到底哪个管用&#xff1f;我带200多个小学生练过字&#xff0c;前前后后试了十款软件&#xff0c;今天就掏心窝子说说——有的看着花哨其实没用&#xff0c;有的专业是专业但…