ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

【AI】roofline

【AI】roofline 在线性坐标里斜率等于带宽在这张双对数图里两条斜线的斜率都为 1带宽大小体现为斜线的上下位置。图左侧的 (BW_1、BW_2) 应理解为两条带宽限制线的标签不能直接当成纵轴上的带宽刻度。下面从公式推导就能把“斜率”和“截距”区分清楚。1. 为什么低算术强度时吞吐率与算术强度成正比设某个任务需要完成 (F) 次浮点运算并在所分析的存储接口上传输 (D) 字节数据包括读和写。算术强度就是I F D 单位FLOP/Byte I\frac{F}{D} \qquad \text{单位FLOP/Byte}IDF​单位FLOP/Byte假设这个接口的带宽为 (BW)在带宽成为瓶颈且带宽充分利用的情况下执行时间近似为t ≈ D B W t\approx \frac{D}{BW}t≈BWD​因此计算吞吐率为P F t ≈ F D / B W F D × B W P\frac{F}{t} \approx \frac{F}{D/BW} \frac{F}{D}\times BWPtF​≈D/BWF​DF​×BW也就是P B W × I \boxed{PBW\times I}PBW×I​这就是 Roofline 图中斜线部分的来源。这里 (D) 和 (BW) 必须对应同一个存储接口例如都针对 HBM而不能用 HBM 的流量配片上 SRAM 的带宽。(NVIDIA Docs)它的物理含义很直接B y t e s ⏟ 每秒能搬多少数据 × F L O P B y t e ⏟ 每搬一字节对应多少计算 F L O P s ⏟ 每秒能支持多少计算 \underbrace{\frac{\mathrm{Byte}}{\mathrm{s}}}_{\text{每秒能搬多少数据}} \times\underbrace{\frac{\mathrm{FLOP}}{\mathrm{Byte}}}_{\text{每搬一字节对应多少计算}} \underbrace{\frac{\mathrm{FLOP}}{\mathrm{s}}}_{\text{每秒能支持多少计算}}每秒能搬多少数据sByte​​​×每搬一字节对应多少计算ByteFLOP​​​每秒能支持多少计算sFLOP​​​带宽相同每搬一字节对应的计算量越多就能支撑越高的计算吞吐率。2. 在线性坐标下斜率确实就是带宽纵截距是 0先暂时不取对数直接画x I , y P xI,\qquad yPxI,yP那么y B W ⋅ x yBW\cdot xyBW⋅x由这个式子求得d P d I B W \boxed{\frac{\mathrm dP}{\mathrm dI}BW}dIdP​BW​因此在线性坐标下带宽越大斜线越陡。这是标准 Roofline 带宽上限公式的直接数学结果。例如 (BW1\ \mathrm{TB/s})那么在带宽受限区I 每增加 1 F L O P / B y t e ⇒ P 增加 1 T F L O P / s I\text{ 每增加 }1\ \mathrm{FLOP/Byte} \quad\Rightarrow\quad P\text{ 增加 }1\ \mathrm{TFLOP/s}I每增加1FLOP/Byte⇒P增加1TFLOP/s而这条线在数学上经过原点I 0 ⇒ P 0 I0\Rightarrow P0I0⇒P0所以在线性坐标中不是“斜率和截距都是带宽”而是“斜率为带宽截距为 0”。3. 在这张双对数图下斜率是 1带宽决定上下位置现在把同一个公式取对数P B W ⋅ I PBW\cdot IPBW⋅I得到log ⁡ P log ⁡ I log ⁡ B W \log P\log I\log BWlogPlogIlogBW这里的对数是对选定单位后的数值取对数。例如(P) 用 TFLOP/s(I) 用 FLOP/Byte(BW) 用 TB/s三者的数值就满足上式。令X log ⁡ I , Y log ⁡ P X\log I,\qquad Y\log PXlogI,YlogP则Y X log ⁡ B W \boxed{YX\log BW}YXlogBW​于是在对数坐标里斜率 1 , 纵截距 log ⁡ B W \boxed{\text{斜率}1,\qquad \text{纵截距}\log BW}斜率1,纵截距logBW​同一个比例关系 (PBW,I)换成双对数坐标后原来控制斜率的比例系数 (BW)就变成了控制上下位置的加法项 (\log BW)。原始 Roofline 模型也正是用双对数坐标来展示这两类性能上限。这个“斜率为 1”有什么物理含义它表达的不是“带宽等于 1”而是带宽不变时算术强度扩大多少倍带宽能支持的计算吞吐率就扩大多少倍。例如在尚未触及计算上限时I → 10 I ⇒ P → 10 P I\rightarrow 10I \quad\Rightarrow\quad P\rightarrow 10PI→10I⇒P→10P横轴增加一个数量级纵轴也增加一个数量级所以对数坐标中的斜率为 1。更一般地双对数图中P C I α ⇒ log ⁡ P α log ⁡ I log ⁡ C PC I^\alpha \quad\Rightarrow\quad \log P\alpha\log I\log CPCIα⇒logPαlogIlogC斜率反映的是幂指数 (\alpha)而不是比例系数 (C)。这里 (\alpha1)(CBW)。4. 那么图中的“纵轴截距是带宽”该怎么理解需要分清两件事。第一对数坐标的 (X0)不是算术强度 (I0)因为X log ⁡ I 0 ⇒ I 1 X\log I0 \quad\Rightarrow\quad I1XlogI0⇒I1也就是说如果横轴以 FLOP/Byte 为单位对数坐标中的零点对应的是 (1\ \mathrm{FLOP/Byte})不是零算术强度。(I0) 根本不能画在对数轴上。当I 1 F L O P / B y t e I1\ \mathrm{FLOP/Byte}I1FLOP/Byte假设带宽为B W 4 T B / s BW4\ \mathrm{TB/s}BW4TB/s那么带宽线上的吞吐率为P 4 T F L O P / s P4\ \mathrm{TFLOP/s}P4TFLOP/s这里带宽和吞吐率的数值恰好都为 4但物理量仍然不同B W 4 T B / s ≠ P 4 T F L O P / s BW4\ \mathrm{TB/s} \neq P4\ \mathrm{TFLOP/s}BW4TB/sP4TFLOP/s因此“截距表示带宽”更准确的意思是在选定坐标和单位后带宽决定这条线的纵向位置可以从这个位置反推出带宽。不是说纵轴上的物理量变成了带宽。第二你这张图的最左侧不一定就是 (I1)这张图没有标出具体的数值刻度。假如左边界对应的是 (I_{\min})那么斜线与左边界交点的实际纵坐标是P l e f t B W ⋅ I min ⁡ \boxed{P_{\mathrm{left}}BW\cdot I_{\min}}Pleft​BW⋅Imin​​所以图左侧写的 (BW_1、BW_2)最好直接理解为“这是带宽为 (BW_1) 的性能限制线”和“这是带宽为 (BW_2) 的性能限制线”。不能仅凭文字标在纵轴旁就把它当作纵轴的数值。5. 用一组数字对应回这张图假设两个配置的峰值算力都为P max ⁡ 200 T F L O P / s P_{\max}200\ \mathrm{TFLOP/s}Pmax​200TFLOP/s但带宽分别为B W 1 1 T B / s , B W 2 4 T B / s BW_11\ \mathrm{TB/s},\qquad BW_24\ \mathrm{TB/s}BW1​1TB/s,BW2​4TB/s按照 Roofline 上限公式P r o o f min ⁡ ( P max ⁡ , B W ⋅ I ) P_{\mathrm{roof}}\min(P_{\max},BW\cdot I)Proof​min(Pmax​,BW⋅I)可以算出下表。该公式表示的是性能上限而不是保证实际程序一定能达到的性能。算术强度 (I)FLOP/Byte(BW_1) 下的吞吐率上限TFLOP/s(BW_2) 下的吞吐率上限TFLOP/s1141010405050200100100200200200200在两者都处于斜线段时P 2 P 1 B W 2 B W 1 4 \frac{P_2}{P_1} \frac{BW_2}{BW_1} 4P1​P2​​BW1​BW2​​4也就是说较高的那条线在同一个算术强度下能支撑 4 倍的吞吐率。在双对数图上两条线因此是平行的纵向距离为Δ Y log ⁡ 10 P 2 − log ⁡ 10 P 1 log ⁡ 10 4 ≈ 0.602 \Delta Y \log_{10}P_2-\log_{10}P_1 \log_{10}4 \approx 0.602ΔYlog10​P2​−log10​P1​log10​4≈0.602所以两条斜线之间的纵向间距表达的是带宽的倍数关系不是带宽的差值。更高的带宽也会更早碰到计算上限因为拐点满足I c r i t i c a l P max ⁡ B W I_{\mathrm{critical}}\frac{P_{\max}}{BW}Icritical​BWPmax​​本例中两个拐点分别为 (200) 和 (50\ \mathrm{FLOP/Byte})。这就对应你图里紫色线比蓝色线更早变平实际能否接近这些上限还取决于并行度、访存效率等因素。(NVIDIA Docs)归纳起来在线性图上带宽决定“有多陡”在这张双对数图上带宽决定“有多高”而斜率为 1 表示“吞吐率与算术强度按相同倍数增长”。
返回列表