Roofline 분석

rooflineperformance

Roofline 분석은 연산의 arithmetic-intensity와 하드웨어의 두 한계를 이용해 달성 가능한 성능의 상한을 보는 모델이다.

Pattainable=min(C, BW×AI)P_\text{attainable} = \min(C,\ BW \times AI)

여기서:

C  = peak compute throughput
BW = memory bandwidth
AI = arithmetic intensity

두 개의 지붕

성능 P를 FLOP/s로 보면 두 상한이 있다.

첫 번째는 연산 유닛의 한계다.

PCP \le C

두 번째는 메모리 대역폭의 한계다. 산술 강도가 AI FLOP/byte이고 메모리 대역폭이 BW byte/s라면, 메모리에서 데이터를 공급받아 만들 수 있는 성능은:

PBW×AIP \le BW \times AI

그래서 달성 가능한 성능 상한은 둘 중 작은 값이다.

Pattainable=min(C, BW×AI)P_\text{attainable} = \min(C,\ BW \times AI)

이 식을 그래프로 그리면 왼쪽은 대각선, 오른쪽은 평평한 선이 된다. 모양이 지붕처럼 보여서 roofline이라고 부른다.

시간 모델과 같은 말

시간으로 보면 compute-memory-time의 하한과 같다.

Tcompute=FCT_\text{compute} = \frac{F}{C} Tmemory=MBWT_\text{memory} = \frac{M}{BW} Tactualmax(Tcompute,Tmemory)T_\text{actual} \ge \max(T_\text{compute}, T_\text{memory})

성능 그래프에서는 같은 관계를 이렇게 본다.

AI가 낮다  -> BW x AI가 작다 -> memory-bound
AI가 높다  -> C가 상한이다   -> compute-bound

경계점

경계는 두 상한이 같아지는 지점이다.

C=BW×AIC = BW \times AI

따라서:

AI=CBWAI = \frac{C}{BW}

이 값이 하드웨어의 critical AI다.

AI < C / BW  -> memory-bound
AI > C / BW  -> compute-bound

확인

  • Roofline의 기본 식 min(C, BW x AI)에서 각 문자는 무엇을 뜻하는가?
  • 왜 그래프의 왼쪽은 memory-bound가 되는가?
  • critical AI는 어떻게 계산하는가?