ToB企服应用市场:ToB评测及商务社交产业平台
标题:
GPU架构概述
[打印本页]
作者:
何小豆儿在此
时间:
2024-11-7 18:59
标题:
GPU架构概述
GPU \textbf{GPU} GPU架构与 CUDA \textbf{CUDA} CUDA编程模型
1. GPU \textbf{1. }\textbf{GPU} 1. GPU体系结构
1️⃣计算单位组织架构
结构功能 CUDA \text{CUDA} CUDA焦点雷同 ALU \text{ALU} ALU(但远没 CPU \text{CPU} CPU的灵活),可执行浮点运算/张量运算/光线追踪(高级焦点) Warp \text{Warp} Warp多焦点共用一个取指/译码器,按 SIMT \text{SIMT} SIMT工作(全部线程指令雷同/数据可不同) SM \text{SM} SM包含多组 Warps \text{Warps} Warps,全部 CUDA \text{CUDA} CUDA焦点共用一套执行上下文(缓存) & \& &共享内存 2️⃣存储条理架构:
不同 SM \text{SM} SM可以或许 Access \text{Access} Access雷同的 L2 Cache \text{L2 Cache} L2 Cache
显存与缓存之间的带宽极高,但是相比 GPU \text{GPU} GPU的运算能力仍旧有瓶颈
2. \textbf{2. } 2. CUDA \textbf{CUDA} CUDA编程模型
1️⃣ CUDA \text{CUDA} CUDA步伐简述
CUDA \text{CUDA} CUDA步伐的两部门 步伐运行位置主要职责Host步伐 CPU \text{CPU} CPU任务管理/数据传输/启动 GPU \text{GPU} GPU内核Device步伐 GPU \text{GPU} GPU执行内核/处理数据
Kernel \text{Kernel} Kernel即在 GPU \text{GPU} GPU上运行的函数,如下简单内审定义示例
//通过__global__关键字声名内核函数
__global__ void VecAdd(float* A, float* B, float* C)
{
int i = threadIdx.x;
C[i] = A[i] + B[i];
}
int main()
{
//通过<<<...>>>中参数指定执行kernel的CUDA thread数量
VecAdd<<<1, N>>>(A, B, C);
}
复制代码
2️⃣线程并行执行架构
线程条理: 结构职位功能 Thread \text{Thread} Thread并行执行最小单位执行 Kernel \text{Kernel} Kernel的一段代码 Warp(32Threads) \text{Warp(32Threads)} Warp(32Threads)线程调度的基本单位全部线程以 SIMD \text{SIMD} SIMD方式执行雷同指令 Block \text{Block} Block GPU \text{GPU} GPU执行线程基本单位使块内线程内存共享/指令同步 Grid \text{Grid} Grid并行执行的最大单位执行整个内核(启动内核时必启动整个 Grid \text{Grid} Grid)
线程在计算单位的映射:线程条理 ↔ 条理对应 GPU \xleftrightarrow{条理对应}\text{GPU} 条理对应 GPU物理架构
留意 SM \text{SM} SM和 Block \text{Block} Block不必 1v1 \text{1v1} 1v1对应也可 Nv1 \text{Nv1} Nv1对应
线程在存储单位的映射 线程结构可 Access \textbf{Access} Access的内存结构访问速率 Thread \text{Thread} Thread每线程唯一的 Local Memory \text{Local Memory} Local Memory极快 Block \text{Block} Block每块唯一的 Shared Memory \text{Shared Memory} Shared Memory(块中每个线程都可访问)较快全部线程唯一且共享的 Global Memory \text{Global Memory} Global Memory较慢
3. CPU \textbf{3. CPU} 3. CPU与 GPU \textbf{GPU} GPU
1️⃣ CPU/GPU \text{CPU/}\text{GPU} CPU/GPU结构对比
GPU \text{GPU} GPU CPU \text{CPU} CPU ALU \text{ALU} ALU功能强但数量少(只占 GPU \text{GPU} GPU小部),时钟频率极高功能弱但数量大,时钟频率低 Cache \text{Cache} Cache容量大并分级,缓存后续访问数据容量很小,用于提高线程服务控制复杂串行逻辑,如流水/分支预测/乱序执行简单(但大规模)并行逻辑 3️⃣ CPU ↔ 数据 / 指令传输 PCIe GPU \text{CPU} \xleftrightarrow[数据/指令传输]{\text{PCIe}} \text{GPU} CPUPCIe 数据/指令传输GPU交互
设备逻辑职位 IO \textbf{IO} IO模块任务分配 GPU \text{GPU} GPU外设 IO Block \text{IO Block} IO Block(南桥)控制逻辑和任务调度 CPU \text{CPU} CPU主机 Copy Engine \text{Copy Engine} Copy Engine执行大量并行计算任务
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4