gpt4 book ai didi

cuda - 在 Nsight Compute 中解释计算工作负载分析

转载 作者:行者123 更新时间:2023-12-03 20:25:49 25 4
gpt4 key购买 nike

计算工作负载分析显示不同计算管道的利用率。我知道在现代 GPU 中,整数和浮点管道是不同的硬件单元,可以并行执行。但是,对于其他管道,哪个管道代表哪个硬件单元并不是很清楚。我也找不到任何关于管道缩写和解释的在线文档。

我的问题是:

1)ADU、CBU、TEX、XU的全称是什么?它们如何映射到硬件?

2) 哪些流水线使用相同的硬件单元(例如 FP16、FMA、FP64 使用浮点单元)?

3)现代GPU中的warp调度器每个周期可以调度2条指令(使用不同的管道)。哪些流水线可以同时使用(例如 FMA-ALU、FMA-SFU、ALU-Tensor 等)?

P.s.:我为那些不熟悉 Nsight Compute 的人添加了屏幕截图。 enter image description here

最佳答案

Volta (CC 7.0) 和 Turing (CC 7.5) SM 由 4 个子分区 (SMSP) 组成。每个子分区包含

  • 经纱调度程序
  • 注册文件
  • 立即常量缓存
  • 执行单元
  • ALU、FMA、FP16、UDP (7.5+) 和 XU
  • 以计算为中心的部件 (GV100) 上的 FP64
  • 张量单位

  • 包含几个其他分区,其中包含由 4 个子分区共享的执行单元和资源,包括
  • 指令缓存
  • 索引常量缓存
  • L1 数据缓存,分为标记 RAM 和共享内存
  • 执行单元
  • ADU, LSU, TEX
  • 在非计算部分 FP64 和 Tensor 可以实现为共享执行单元

  • 在 Volta (CC7.0, 7.2) 和 Turing (CC7.5) 中,每个 SM 子分区每个周期可以发出 1 条指令。该指令可以发布到本地执行单元或SM共享执行单元。
  • ADU - 地址分歧单位。在将指令转发到其他执行单元之前,ADU 负责针对分支/跳转和索引常量加载的每个线程地址分歧处理。
  • ALU - 算术逻辑单元。 ALU 负责执行大多数整数指令、位操作指令和逻辑指令。
  • CBU - 收敛屏障单元。 CBU 负责屏障、收敛和分支指令。
  • FMA - 浮点乘法和累加单元。 FMA 负责大多数 FP32 指令、整数乘法和累加指令以及整数点积。
  • FP16 - 成对的半精度浮点单元。 FP16 单元负责执行成对的半精度浮点指令。
  • FP64 - double 浮点单元。 FP64 单元负责所有 FP64 指令。 FP64 通常在 NVIDIA GPU 上实现为几个不同的管道。每个芯片的吞吐量差异很大。
  • LSU - 加载存储单元。 LSU 负责加载、存储和原子指令到全局、本地和共享内存。
  • 张量 (FP16) - 半精度浮点矩阵乘法和累加单元。
  • 张量 (INT) - 整数矩阵乘法和累加单元。
  • 特克斯 - 纹理单元。纹理单元负责对纹理和表面进行采样、加载和过滤指令。
  • UDP (Uniform) - Uniform Data Path - 一个标量单元,用于执行指令,其中 Warp 中的所有线程的输入和输出都是相同的。
  • - 先验和数据类型转换单元 - XU 负责特殊函数,如 sin、cos 和倒数平方根以及数据类型转换。
  • 关于cuda - 在 Nsight Compute 中解释计算工作负载分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61413176/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com