从公司架构理解GPU架构

想象一个GPU就像一家大型科技公司,它的任务是处理图形和计算任务(“干活”)。

硬件概念公司架构比喻作用和特点
Platform (平台)集团公司最大的独立实体。比如谷歌Alphabet是一个集团公司,它旗下有谷歌、Waymo、Verily等子公司(Platform)。每个子公司(Platform)在法律和财务上是独立的。在电脑里,插两块不同型号的显卡,就是两个独立的Platform。
Die (芯片)子公司的大型办公楼一个子公司(Platform)可能在一栋巨大的办公楼(Die)里办公。这栋楼里有自己的基础设施(供电、网络)。楼和楼之间通过高速公路(Socket/Interposer)连接。一栋楼可以容纳很多部门(Device)。
Device (设备)部门或团队一栋办公楼(Die)里会有很多不同的部门(Device),比如搜索部门、广告部门、YouTube部门。每个部门相对独立,有自己的项目管理和资源,但共享整栋楼的基础设施(食堂、网络端口)。
Core (核心)项目组一个部门(Device)里会有多个项目组(Core),比如广告部门下有“精准投放组”、“数据分析组”。每个组都能独立完成一个任务。
Cluster (簇)组内的工程师一个项目组(Core)不是一个人,它是由多名工程师(Cluster)组成的。一个Cluster就是最基础的计算单元。组里工程师越多(Cluster越多),这个组的整体战斗力就越强。
MMU/Page Table (页表)公司的权限管理系统规定了哪个部门(Device)、哪个项目组(Core)能访问公司的哪些机密数据和资源(内存地址)。共享页表就是让两个部门共用一套权限规则,它们能看到同一份数据。

详细讲解每个硬件概念

1. Die (芯片)

  • 是什么: 这是一片独立的硅晶片,就是我们通常意义上说的“芯片”。它是在工厂里一次性制造出来的。
  • 为什么重要: 制造非常大的芯片(巨型Die)良品率很低,成本极高。就像盖一栋超大的摩天大楼,难度和风险都很高。
  • 解决方案: 现代GPU(如AMD的RX 7000系列,NVIDIA的H100)采用Chiplet(小芯片)设计:Instead of building one gigantic die, they package multiple smaller dies together onto a single carrier (封装基板)。这些dies之间通过超高速内部总线(如Infinity Fabric, NVLink)通信。
  • dieIDs=0,0,1,1 表示这个Platform由两个Dies组成,第一个Die上有两个Device(ID 0和1),第二个Die上也有两个Device(ID 2和3)。

2. Cluster (簇) 和 Core (核心)

这两个概念容易混淆,但它们是一个层级关系。

  • Core (核心)
    • 这是一个功能完整的处理单元。你可以把它想象成一个独立的“大脑”,能够接收、处理并完成一整个任务(比如渲染一个复杂的物体)。
    • 一个GPU包含很多个这样的Cores,它们并行工作,实现强大的性能。
  • Cluster (簇):
    • 这是组成一个Core的最基本计算单元。一个Core内部包含很多个完全相同的Clusters
    • 每个Cluster都包含算术逻辑单元(ALU),负责进行最基础的数学运算(加减乘除)。
    • 为什么这样设计? 这是一种高效的设计哲学。设计一个强大的、复杂的单一Core很难。Instead, 设计一个简单小巧的Cluster,然后在一个Core内部复制几十个这样的Cluster,让它们协同工作,效率更高。这就像一支军队,不是靠一个超人,而是靠成千上万训练有素的士兵组成方阵。
  • 关系类比
    • Core = 一个完整的交响乐团。它能演奏一整首交响乐(处理一个完整任务)。
    • Cluster = 乐团里的一位小提琴手。他只会拉小提琴(做基础运算),但很多位小提琴手一起工作,就能奏出恢弘的乐章。
    • userClusterMasks: 这个参数就是用来配置每个乐团(Core)里,哪些乐手(Cluster)今天来上班0x7f (二进制 01111111) 意味着这个Core内部的128个Clusters中,低7位对应的Cluster被启用了(比如启用了7个),其他的被禁用了。这用于模拟部分硬件损坏或节能配置。

3. MMU 和 Page Table (内存管理单元和页表)

  • 是什么MMU是内存管理单元,Page Table是页表,它们是CPU和GPU中至关重要的组件。
  • 作用
    1. 虚拟内存: 程序看到的内存地址(虚拟地址)和实际的物理内存地址是不同的。MMU负责在两者之间进行翻译
    2. 隔离与保护: 确保程序A不能胡乱访问程序B的内存数据,否则系统会崩溃。
    3. 共享内存: 也可以让多个程序(或多个GPU Device)安全地访问同一块物理内存。
  • combineDevIDs 的作用
    • 每个Device通常有自己独立的MMU和页表,这意味着它们看到的“内存世界”是隔离的
    • 如果想让多个Device(比如Die0上的Device0和Die1上的Device1)紧密合作,共同处理一个超大的任务,它们就需要共享同一块内存数据
    • 如何共享? 就是让它们的MMU使用同一份页表。这样,它们对同一个虚拟地址的访问会被翻译到同一个物理地址上。
    • combineDevIDs=0,0,1,2 就是在设置:谁和谁共享谁的页表。这相当于在公司的权限系统里,把几个部门的权限合并了,让他们可以共同操作同一个项目的数据。

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

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

相关文章

【硬件开发】电源抑制比PSRR

电源抑制比PSRR是电压输入量和电压输出量的比值,通常用dB来表示。 PSRR这个参数经常和运放,LDO,DCDC变换器有关联。(2 封私信 / 58 条消息) 电源抑制比(PSRR)的基础知识 - 知乎

七、卷积神经网络

目录 7.1 整体结构 7.2 卷积层 7.2.1 全连接层存在的问题 7.2.2 卷积运算 7.2.3 填充 7.2.5 3维数据的卷积运算 7.2.6 结合方块思考 7.2.7 批处理 7.3 池化层 7.4 卷积层和池化层的实现 7.4.1 4维数组 7.4.2 基于 im2col的展开 7.4.3 卷积层的实现 7.4.4 池化层的…

加餐加餐!烧烤斗破苍穹

忽然起了吃烧烤的念头,便掏出手机点了一堆。不过二十分钟,外卖小哥便按响了门铃,手里提着一个方正的纸袋,还冒着热气。我将烧烤一一取出,排在茶几上。肉串油光发亮,韭菜翠绿间点缀着蒜蓉,茄子剖…

搜索引擎收录网站带www和不带www有区别吗?

这是一个非常常见且重要的问题。简单直接的回答是:有区别,但对搜索引擎来说,处理得当就不会重复;处理不当则会造成严重重复和权重分散。下面我为您详细解释一下,并提供正确的处理方法。核心区别:两个不同的…

AFSim2.9.0学习笔记 —— 2、AFSim的Wizard软件概述(ArkSIM集成开发环境 (IDE))

🔔 AFSim2.9.0 相关技术、疑难杂症文章合集(掌握后可自封大侠 ⓿_⓿)(记得收藏,持续更新中…) 若还没有下载AFSim2.9.0完整软件或源码,请先进入本人另篇文章了解下载。 正文 ▪️主界面 打开 Ar…

建自己的Python项目仓库,使用工具:GitHub(远程仓库)、GitHub Desktop(版本控制工具)、VSCode(代码编辑器)

结合 GitHub(远程仓库)、GitHub Desktop(版本控制工具)、VSCode(代码编辑器) 三个工具,以下是更具体的Python项目仓库搭建流程,包含工具协同操作的详细步骤: 一、整体流程…

iDEA Lombok 失效 和 slf log 变量失效问题

1. lombok 失效:检查下配置有没有使用注解处理器;且这个处理中有没有带上版本;版本号需要与上面引入的依赖版本一致。2. 对于找不到 log 变量的操作,则是使用下面将这个变量使用下面的代码定义出来;上面去掉 slf4j注解…

go资深之路笔记(二) sync.Pool

一、 使用 sync.Pool 减少 GC 压力,提升性能 简单讲下go的gc,它的核心原理就是三色标记法和写屏障,可以实现优秀并发处理。gc一般不会频繁调用,他是根据GOGC的值来判断,具体就是上次触发GC后总堆值大于等于上次的(1GO…

【面试笔记-Java开发岗】

目录:1. synchronized 和 ReentrantLock 的区别及应用场景2. HashMap 与 LinkedHashMap 的区别3. ConcurrentHashMap 的数据结构及 JDK1.7 与 JDK1.8 区别4. Spring 常用的模式及应用场景5. 事务的四大特性(ACID)6. 锁机制:行级锁…

CSS :has() 选择器详解:为什么它是“父选择器”?如何实现真正的容器查询?

一、前言 在传统的 CSS 中,我们只能根据元素的自身属性、类名、ID 或其子元素/兄弟元素来设置样式,却无法根据其父元素或后代元素的状态来改变自身样式。 直到 :has() 选择器的出现,这一局面被彻底改变。 :has() 被称为 “父选择器” 或 “…

李宏毅 Deep Learning

感谢李宏毅老师qwq1. 基础概念1.1 Machine Learning问题引出:预测后面几天的观看人数;初步构建模型:拟合效果不好,就是在原数据上平移了一段距离;此处构建模型的本质:利用特征工程,将“多维特征…

【AI论文】分享即关爱:基于集体强化学习经验共享的高效语言模型(LM)后训练方法

摘要:利用强化学习(RL)对语言模型(LMs)进行后训练,无需监督微调即可增强其复杂推理能力,DeepSeek-R1-Zero便证明了这一点。然而,要有效利用强化学习训练语言模型,需要进行…

工业网关在汽车冲压车间的应用:EtherNet/IP转EtherCAT集成实践

在汽车零部件冲压车间中,生产线的高效协同与精准控制是提升整体产能的关键。随着自动化设备的多样化,不同协议的设备之间的通信成为技术难点。例如,罗克韦尔PLC通常采用EtherNet/IP协议,而许多高性能机械臂则依赖EtherCAT协议。如…

【底层机制】【C++】std::move 为什么引入?是什么?怎么实现的?怎么正确用?

C++底层机制推荐阅读 【C++基础知识】深入剖析C和C++在内存分配上的区别 【底层机制】【C++】vector 为什么等到满了才扩容而不是提前扩容? 【底层机制】malloc 在实现时为什么要对大小内存采取不同策略? 【底层机制】剖析 brk 和 sbrk的底层原理 【底层机制】为什么栈的内存…

Redis面试相关

数据过期策略 惰性删除 当用到那个key的时候再检查是否过期,过期则删除,有效则返回key 优点是可以节省检查过期的时间 缺点是会浪费内存 定期删除 每隔一段时间对一些key进行检查并且删除里面的过期key 有两种模式 slow模式是定时任务,频率是…

知识输出零散没有体系怎么办

当面临知识输出零散、不成体系的困境时,其根本原因在于未能建立一个从输入、整合到输出的闭环系统。要解决这一问题,核心在于构建个人知识管理体系、掌握结构化思维与表达能力、运用合适的工具与方法进行固化、持续实践并迭代优化。这意味着,…

【C语言选择排序算法详解】+ 算法性能优化 + 动态演示实现

文章目录一、算法介绍二、算法特点三、代码实现与解析四、代码解析1. 打印数组函数2. 选择排序核心逻辑3. 动态展示实现4. 主函数五、算法优化思路与实现优化1:减少交换次数优化原理:优化2:双向选择排序优化原理:优化3&#xff1a…

栈(Java)

提示:多练才是王道,加油٩(๑❛ᴗ❛๑)۶ 栈Java1. 栈2. Java中栈的其中两种实现方式2.1 Stack类2.1.1 Stack的模拟实现2.2 LinkedList类3. 典型习题讲解3.1 逆波兰表达式求值3.2 匹配括号3.3 合理弹出序列3.4 最小栈1. 栈 栈是一种特殊的线性表,其只允许在固定的一…

LayaAir鼠标(手指)控制相机旋转,限制角度

切换天空盒脚本挂载到相机身上 const { regClass, property } Laya;regClass() export class SmoothCameraController extends Laya.Script {declare owner: Laya.Camera;// 旋转灵敏度property({ type: Number, name: "旋转灵敏度" })public rotationSensitivity:…

【数据结构入门】排序算法(4)归并排序

目录 1.排序的原理 1.1 保证子数组有序 1.2 时间复杂度 2. 递归实现 2.1 思路 2.2 代码 3. 非递归实现 3.1 思路 3.2 代码 4.面试题 4.1 题目 4.2 思路 1.排序的原理 归并排序是外排序,所谓外排序就是说能够对文件中的数据进行排序。 ①首先&#xff…