MUSA 术语表
GPU 编程基础
| 术语 | 英文 | 说明 |
|---|---|---|
| 线程 | Thread | GPU 执行的最小单元,每个线程执行相同的代码但处理不同的数据 |
| 线程块 | Thread Block | 一组线程的集合,同一线程块内线程可同步 |
| 网格 | Grid | 所有线程块的集合,定义了内核的整体执行范围 |
| 流多处理器 | Streaming Multiprocessor | GPU 的核心计算单元,负责执行线程块 |
| 线程束 | Warp | 32 个线程的集合,是流多处理器调度的基本单位 |
| 单指令多线程 | Single Instruction Multiple Threads | 单指令多线程架构,多个线程执行相同指令 |
MUSA
| 术语 | 英文 | 说明 |
|---|---|---|
| MUSA | Meta-computing Unified System Architecture | 元计算统一系统架构 |
| musify | musify | CUDA 到 MUSA 的代码迁移工具 |
| muBLAS | MUSA Basic Linear Algebra Subprograms | MUSA 基础线性代数子程序库 |
| muDNN | MUSA Deep Neural Network | MUSA 深度神经网络库 |
| muFFT | MUSA Fast Fourier Transform | MUSA 快速傅里叶变换库 |
| muRAND | MUSA Random Number Generation | MUSA 随机数生成库 |
| MCC | MUSA C Compiler | MUSA C 编译器 |
内存
| 术语 | 英文 | 说明 |
|---|---|---|
| 全局内存 | Global Memory | GPU 设备上的主内存,所有线程可访问,延迟较高 |
| 共享内存 | Shared Memory | 位于流多处理器内部的快速内存,同一线程块内线程共享 |
| 寄存器 | Register | 每个线程私有的高速寄存器,访问速度最快 |
| 常量内存 | Constant Memory | 缓存的只读内存,适合存储不变的数据 |
| 纹理内存 | Texture Memory | 优化的只读内存,支持空间局部性访问 |
| 局部内存 | Local Memory | 线程私有的内存,用于寄存器溢出 |
| 主机内存 | Host Memory | CPU 端的系统内存 |
执行
| 术语 | 英文 | 说明 |
|---|---|---|
| 内核 | Kernel | 在 GPU 上执行的并行函数 |
| 流 | Stream | 异步操作队列,保证操作顺序 |
| 同步 | Synchronization | 等待 GPU 操作完成 |
| 动态并行 | Dynamic Parallelism | 从 GPU 启动新的内核 |
| 主机函数 | Host Function | 在 CPU 端执行的函数 |
| 设备函数 | Device Function | 在 GPU 端执行的函数 |
| 网格配置 | Grid Configuration | 定义线程块和线程数量的参数 |
BLAS
| 术语 | 英文 | 说明 |
|---|---|---|
| 一级 BLAS | Level 1 BLAS | 向量 - 向量操作,如点积、axpy |
| 二级 BLAS | Level 2 BLAS | 矩阵 - 向量操作,如矩阵向量乘法 |
| 三级 BLAS | Level 3 BLAS | 矩阵 - 矩阵操作,如矩阵乘法 |
深度学习
| 术语 | 英文 | 说明 |
|---|---|---|
| 卷积 | Convolution | 深度学习中的核心操作之一 |
| 池化 | Pooling | 降采样操作,包含最大池化和平均池化 |
| 激活函数 | Activation Function | 非线性函数,如 ReLU、Sigmoid、Tanh |
| 全连接层 | Fully Connected Layer | 神经元与上一层全部连接 |
| 批量归一化 | Batch Normalization | 标准化层,加速训练 |
| 循环神经网络 | Recurrent Neural Network | 处理序列数据的神经网络 |
| 长短期记忆 | Long Short-Term Memory | 特殊的循环神经网络 |
| 注意力机制 | Attention | Transformer 架构的核心 |
性能优化
瓶颈类型
| 术语 | 英文 | 定义 | 判断标准 |
|---|---|---|---|
| 计算瓶颈 | Compute-Bound | 性能受限于 GPU 计算单元吞吐量 | 算术强度高,FP32/FP64 吞吐量接近峰值 |
| 内存瓶颈 | Memory-Bound | 性能受限于全局内存带宽 | 算术强度低 (\≤10 FLOP/Byte),内存吞吐量接近峰值 |
| 延迟瓶颈 | Latency-Bound | 性能受限于指令流水线延迟 | 每流多处理器活跃线程束数低,实际占用率低 (小于30%) |
| 同步瓶颈 | Synchronization-Bound | 性能受限于线程同步开销 | 流利用率低,__syncthreads() 调用频繁 |
性能指标
| 术语 | 英文 | 定义 | 说明 |
|---|---|---|---|
| MP 效率 | MP Efficiency | 流多处理器实际利用率 | 实际执行的指令数与理论最大指令数之比 ,大于 80% 表示计算单元充分利用 |
| 内存吞吐量 | Memory Throughput | 全局内存实际数据传输速率 | 包括读取吞吐量和写入吞吐量,接近峰值带宽表示内存瓶颈 |
| 浮点运算吞吐量 | FP32/FP64 Throughput | 每秒执行的浮点运算数量 | 衡量计算单元实际性能 |
| L2 缓存命中率 | L2 Cache Hit Rate | L2 缓存访问命中比例 | 低命中率可能导致内存瓶颈 |
| 每 MP 活跃线程束数 | Active Warps per MP | 流多处理器上同时活跃的线程束数量 | 低值表示延迟瓶颈 |
| 实际占用率 | Achieved Occupancy | 实际活跃线程束与最大线程束的比率 | 低于 30% 可能表示延迟瓶颈 |
| 分支发散 | Branch Divergence | 同一线程束内线程执行不同分支路径 | 高分支发散导致线程束串行化执行 |
| 内存延迟 | Memory Latency | 从请求数据到数据就绪的时间 | 高延迟需要足够占用率来隐藏 |
| 流利用率 | Stream Utilization | GPU 流实际使用时间占比 | 低值表示同步开销过大 |
屋顶模型
| 术语 | 英文 | 定义 | 公式/单位 |
|---|---|---|---|
| 屋顶模型 | Roofline Model | 可视化 GPU 性能上限的模型,显示内核性能与硬件极限的关系 | - |
| 算术强度 | Arithmetic Intensity | 每从内存中读取一个字节的数据,程序可以执行的浮点运算数 | FLOP/Byte |
| 脊点 | Ridge Point | 屋顶模型图表中内存带宽极限与峰值计算性能的交点,决定内存/计算瓶颈的平衡点 | FLOP/Byte |
| 峰值计算性能 | Peak Compute Performance | GPU 理论上每秒可执行的最大浮点运算数 | FLOPS |
| 内存带宽极限 | Memory Bandwidth Limit | GPU 每秒可从全局内存读取/写入的最大数据量 | GB/s |
占用率
| 术语 | 英文 | 定义 |
|---|---|---|
| 占用率 | Occupancy | 流多处理器上活跃线程束数量与最大线程束数量的比率 |
| 活跃线程束 | Active Warp | 当前在流多处理器上已分配资源并准备执行的线程束 |
内存访问优化
| 术语 | 英文 | 定义 |
|---|---|---|
| 合并访问 | Coalesced Access | 线程束中的线程访问连续对齐的内存地址,硬件将多个请求合并为更少的内存事务 |
| 非合并访问 | Uncoalesced Access | 线程访问不连续或不对齐的内存地址,导致多个内存事务,带宽利用率低 |
| 存储体冲突 | Bank Conflict | 多个线程同时访问 共享内存的同一 Bank,导致访问序列化 |
| 向量化访问 | Vectorized Access | 使用宽数据类型(如 float4)一次加载多个元素,提高带宽利用率 |
性能分析工具
| 术语 | 英文 | 说明 |
|---|---|---|
| Moore Perf Compute | Moore Perf Compute | MTGPU 性能分析工具 |
| muPTI | MUSA Performance Tools Interface | MUSA 性能分析工具接口,提供底层性能计数器访问 |
| 性能计数器 | Performance Counter | 硬件单元记录的性能指标,如内存吞吐量、计算单元利用率等 |
| 重放 | Replay | 为获取完整指标集,多次执行内核的过程 |
优化技术
| 术语 | 英文 | 说明 |
|---|---|---|
| 循环展开 | Loop Unrolling | 减少循环控制开销,提高指令级并行度 |
| 融合乘加 | Fused Multiply-Add | 一条指令完成乘法和加法,fmaf(a, b, c) = a * b + c |
| 线程束分化 | Warp Divergence | 同一线程束内线程执行不同分支,导致串行化执行 |
| 指令级并行 | Instruction Level Parallelism | 单个线程内同时执行多条独立指令 |
| 归约算法 | Reduction | 将数组归约为单个值的并行算法(如求和、最大值) |
Triton
| 术语 | 英文 | 说明 |
|---|---|---|
| Triton 内核 | Triton Kernel | 用 Triton 语言编写的 GPU 内核 |
| 自动调优器 | Autotuner | 自动优化内核参数的工具 |
| 计算块 | Block | Triton 中的计算块 |
| 并行程序 | Program | Triton 中的并行程序单元 |
计算能力
| 术语 | 英文 | 说明 |
|---|---|---|
| 计算能力 | Compute Capability | GPU 硬件架构版本号 |
| 峰值浮点性能 | Peak FLOPS | GPU 每秒可执行的最大浮点运算次数 |
| 显存带宽 | Memory Bandwidth | 显存数据传输速率 |
其他
| 术语 | 英文 | 说明 |
|---|---|---|
| 主机 | Host | CPU 和系统内存 |
| 设备 | Device | GPU 和显存 |
| 异步 | Asynchronous | 不阻塞 CPU 执行的操作 |
| 页锁定内存 | Pinned Memory | 页锁定内存,加速数据传输 |
| 零拷贝 | Zero-Copy | 避免数据在主机和设备间复制 |

