본문으로 건너뛰기

[Triton] grouped_gemm 벤치마크 min/max ms 반환 순서 수정

PR 링크: triton-lang/triton#9432 상태: Merged | 변경: +2 / -2

들어가며

Triton의 grouped_gemm 튜토리얼에서 벤치마크 함수가 ms, max_ms, min_ms 순서로 값을 반환하고 있었다. triton.testing.perf_report는 이를 ms, min_ms, max_ms 순서로 기대하므로, y축이 절대 시간(ms)인 이 벤치마크에서 error bar의 상한과 하한이 뒤바뀌어 표시되었다.

핵심 코드 분석

Before

def benchmark_square_matrices(N, provider):
    ms, min_ms, max_ms = triton.testing.do_bench(..., quantiles=quantiles)
    return ms, max_ms, min_ms  # max와 min이 뒤바뀜

def benchmark_batches(M, provider):
    ms, min_ms, max_ms = triton.testing.do_bench(..., quantiles=quantiles)
    return ms, max_ms, min_ms  # 동일한 문제

After

def benchmark_square_matrices(N, provider):
    ms, min_ms, max_ms = triton.testing.do_bench(..., quantiles=quantiles)
    return ms, min_ms, max_ms  # 올바른 순서

def benchmark_batches(M, provider):
    ms, min_ms, max_ms = triton.testing.do_bench(..., quantiles=quantiles)
    return ms, min_ms, max_ms  # 올바른 순서

왜 이게 좋은가

  • 정확한 시각화: error bar가 올바른 방향으로 표시되어, 벤치마크 결과 해석이 정확해진다.
  • 다른 튜토리얼과 일관성: throughput(gbps) 기준인 다른 튜토리얼은 min_ms가 상한이지만, 절대 시간 기준인 grouped_gemm에서는 min_ms가 하한이어야 한다.
  • 2줄 수정: 최소한의 변경으로 명확한 버그를 수정한다.

정리

벤치마크의 y축 단위(throughput vs 절대 시간)에 따라 min/max의 의미가 달라진다는 점을 놓치기 쉽다. 이 PR은 단순하지만, 벤치마크 결과의 정확성을 보장하는 중요한 수정이다.

참고 자료


이 글은 AI 도구의 도움을 받아 작성되었습니다.

댓글

관련 포스트

PR Analysis 의 다른글