본문으로 건너뛰기

[cutlass] NVIDIA CUTLASS SM100 GEMM 커널 최적화 및 분산 환경 개선 분석

PR 링크: NVIDIA/cutlass#3381 상태: Merged | 변경: +16170 / -3881

들어가며

최근 NVIDIA의 차세대 아키텍처인 Blackwell(SM100)을 지원하는 CUTLASS 라이브러리에 중요한 업데이트가 있었습니다. 이번 PR은 GEMM(General Matrix Multiply) 커널의 성능 튜닝과 더불어, 분산 환경에서 발생하는 NVSHMEM OOM(Out of Memory) 문제를 해결하기 위해 PyTorch의 멀티 메모리 할당 방식으로 회귀하는 등 실무적인 최적화가 포함되어 있습니다. 본 글에서는 주요 변경 사항을 분석하고, 왜 이러한 변화가 성능과 안정성에 기여하는지 살펴봅니다.

코드 분석

1. 분산 동기화 로직의 저수준 최적화

기존의 고수준 추상화된 atomicAdd 호출을 cute.arch.atomic_add로 직접 매핑하여 오버헤드를 줄였습니다. 또한, ld_bypass를 통한 메모리 로드 방식을 cute.arch.load로 변경하여 메모리 접근의 세밀한 제어가 가능해졌습니다.

Before:

_ = utils.distributed.atomicAdd(counter_ptr, val_one)
# ...
current_arrivals = utils.distributed.ld_bypass(local_counter_tensor)[0]

After:

_ = cute.arch.atomic_add(
    ptr=counter_ptr.llvm_ptr,
    val=val_one,
    sem="relaxed",
    scope="sys",
)
# ...
current_arrivals = cute.arch.load(
    local_counter_ptr.llvm_ptr,
    cutlass.Int32,
    sem="relaxed",
    scope="sys",
)

2. SM100 아키텍처 특화 유틸리티 통합

sm100_utils로 분산되어 있던 유틸리티 함수들을 utils.sm100 네임스페이스로 통합하고, make_trivial_tiled_mma 호출 시 b_dtype을 명시적으로 전달하도록 수정하여 타입 안정성과 유연성을 확보했습니다.

Before:

tiled_mma = sm100_utils.make_trivial_tiled_mma(
    self.a_dtype, self.a_major_mode, self.b_major_mode, ...)

After:

tiled_mma = utils.sm100.make_trivial_tiled_mma(
    self.a_dtype, self.b_dtype, self.a_major_mode, self.b_major_mode, ...)

왜 이게 좋은가

  1. 메모리 일관성 및 성능: atomic_addloadsem="relaxed"scope="sys"를 명시함으로써, 불필요한 메모리 배리어(Memory Barrier)를 제거하고 시스템 전체 범위의 원자적 연산을 효율적으로 수행할 수 있게 되었습니다. 이는 대규모 분산 GEMM 연산에서 동기화 지연을 최소화합니다.

  2. 안정성 확보: NVSHMEM 기반의 메모리 할당은 특정 환경에서 OOM 이슈를 유발했습니다. 이를 PyTorch의 멀티 메모리 할당 방식으로 되돌림으로써, 기존의 검증된 메모리 관리 체계를 활용해 시스템 안정성을 높였습니다.

  3. 유지보수성: 하드웨어별 유틸리티를 utils.sm100으로 구조화함으로써, 향후 다른 아키텍처(예: Hopper, Ada)와의 코드 공유 및 확장이 용이해졌습니다.

교훈

  • 저수준 API 활용: 고수준 라이브러리가 제공하는 추상화도 좋지만, 성능이 극도로 중요한 커널 레벨에서는 cute.arch와 같은 저수준 API를 사용하여 메모리 접근 세맨틱을 직접 제어하는 것이 유리합니다.
  • 안정성 우선: 최신 기술(NVSHMEM) 도입 시 성능 이득이 있더라도, 프로덕션 환경에서의 OOM과 같은 치명적인 문제가 발생한다면 검증된 기존 솔루션으로 회귀하는 결단이 필요합니다.

참고 자료

⚠️ 알림: 이 분석은 AI가 실제 코드 diff를 기반으로 작성했습니다.

댓글

관련 포스트

PR Analysis 의 다른글