Roofline 分析工具
Roofline 分析工具提供了直观的可视化性能模型,可帮助您了解影响程序性能的内在硬件限制。具体而言,它侧重于程序是受内存限制还是受计算限制,以及程序的性能与硬件的理论峰值性能(表示为“天花板”)有多接近。
支持的平台
TPU:受支持
GPU:受支持(Beta 版)
什么是 Roofline 图表
Roofline 图可直观显示操作强度(每访问字节的 FLOPS)与每秒实现的 FLOPS 之间的关系。
\[ Roofline = min(Operational Intensity \times Peak Memory Bandwidth, Peak FLOPS) \]
“屋顶”形状由峰值 FLOPS 和可在给定内存带宽和操作强度下实现的性能中的较低者决定。峰值点表示达到峰值 FLOPS 所需的最小操作强度。
如需详细了解 Roofline 模型,请参阅 Roofline:适用于浮点程序和多核架构的富有洞见的可视化性能模型,或参阅 Wikipedia 上的 Roofline 模型主题。
解读 Roofline 图表
通过在 Roofline 图上绘制不同步骤、程序的各个部分或单个 HLO 操作的操作强度和实际达到的 FLOPS,您可以深入了解性能瓶颈:
- 如果数据点位于屋顶线的倾斜部分,则性能可能受内存带宽的限制(内存绑定)。提高操作强度(每访问一个字节的数据执行更多计算)可能会提升性能。
- 如果数据点位于天花板的平坦部分,则性能可能受计算能力(计算受限)的限制。在这种情况下,除非能够更好地利用硬件的峰值 FLOPS,否则进一步提高运维强度可能不会带来显著的性能提升。
- 数据点与天花板的距离表示性能提升的潜力。距离越大,就表示有机会优化程序,以更好地利用硬件的功能。
界面组件
Roofline 分析工具界面包含多个关键组件:
- “Device Information”(设备信息)部分介绍了硬件规格;这些规格用于在图表上静态绘制“roofline”(天花板)
- 程序级屋顶图表,其中的数据点对应于以下各项:
- 个人资料的总时长。
- 性能剖析总时长,但 FLOPS/s 数据来自硬件性能计数器,而不是 XLA 编译器计算的默认开销模型。
- 在配置文件时长内执行的完整步骤的平均值(适用于训练作业;对于推理作业,您可以忽略步骤术语)。
- 在配置文件时长内执行的每个完整步骤(适用于训练作业;对于推理作业,您可以忽略步骤术语)。
- 屋顶图表还具有以下功能:
- 您可以使用提供的下拉菜单选择包含或排除 infeed/outfeed 操作。
- 将鼠标悬停在图表中的任意数据点上,即可调出其他相关信息,例如不同内存的带宽数值、总用时等。
- 程序级统计信息表,用于提供每个数据点的更多详细信息,例如最大内存利用率百分比、峰值 FLOPS 速率百分比等。
- 第二个 Roofline 图表提供更精细的信息,其中绘制了在性能分析期间耗时最多的前 1000 个操作的数据点:
- 与程序级 Roofline 图表一样,将鼠标悬停在每个数据点上都会显示与该操作相关的更多信息。
- 您可以通过以下方式自定义图表中显示的数据点:
- 通过下拉菜单包含/排除 infeed 和 outfeed 操作。
- 过滤出特定类别的操作。
- 过滤出受特定资源约束的操作。
- 过滤出特定的命名操作。
- 第二个统计表,与节目级表类似,可提供有关每个数据点的更多详细信息。
上述所有部分均支持以下内存:
- 对于 TPU:HBM、VMEM、CMEM(仅限 TPU v4)。
- 对于 GPU:HBM、L1/SharedMem。
- 只有当配置文件时长内存在受该内存绑定的任何操作时,图表中才会显示相应的线条。例如,如果所有操作都受 HBM 或计算限制,您将不会看到 VMEM 或 CMEM 对应的线条。