본문으로 건너뛰기

RTX 5090에서 cuBLAS의 비효율적인 FP32 커널 성능 문제 분석

RTX 5090 등 소비자용 GPU에서 cuBLAS가 비효율적인 커널을 사용하여 성능이 저하되는 현상을 분석하고, 이를 해결한 커스텀 TMA 커널을 제시했다.

실용적 조언

  • RTX 5090 환경에서 대규모 FP32 배치 연산이 필요한 경우 cuBLAS 대신 TMA 기반의 커스텀 커널 사용을 고려해야 한다.
  • 성능 병목 현상 분석 시 NCU 프로파일링과 SASS 스케줄링 확인을 통해 실제 하드웨어 활용률을 점검해야 한다.

섹션별 상세

01
RTX 5090을 포함한 소비자용 RTX GPU에서 cuBLAS가 모든 배치 FP32 워크로드에 대해 비효율적인 커널을 할당하는 현상이 확인됐다. 테스트 결과 256x256부터 8192x8192 크기까지 가용 연산 성능의 약 40%만 활용하는 것으로 나타났으며, 이는 최신 CUDA 13.2.51 및 cuBLAS 13.3.0 환경에서도 동일하게 발생했다. 이러한 현상은 Pro 6000이나 H200 같은 전문가용 GPU에서는 발생하지 않으며, 소비자용 제품군에 대한 최적화 미비가 원인으로 지목됐다.
02
작성자는 TMA(Tensor Memory Accelerator)와 이중 버퍼링 기법을 적용한 커스텀 커널을 구현하여 cuBLAS와 성능을 비교했다. 이 커널은 한 타일의 연산을 수행하는 동안 다음 타일의 데이터를 미리 로드하는 비동기 파이프라인 방식을 사용하여 메모리 대기 시간을 최소화했다. 벤치마크 결과 RTX 5090 배치 모드에서 cuBLAS 대비 최소 46%에서 최대 65%까지 더 높은 성능을 기록했으며, 이는 전문가용 GPU에서 사용되는 최적화된 커널 성능의 80-120% 수준에 도달했다.
cpp
__global__ __launch_bounds__(256) void fused_matmul( const __grid_constant__ CUtensorMap A_tma, const __grid_constant__ CUtensorMap B_tma, float* C) {
  extern __shared__ __align__(128) char dsmem[];
  // ... (중략)
  for (int t = 0; t < K/BK; t++) {
    int s = t % 2; // Current buffer
    mbarrier_wait(mbarrier[s], phase[s]);
    if (tid == 0 && t + 1 < nt) {
      tma_load_2d(next_buf_a, &A_tma, next_k, bm, next_mbar);
      tma_load_2d(next_buf_b, &B_tma, bn, next_k, next_mbar);
    }
    // Compute: all 256 threads do FMA from shared memory
    // ... (중략)
  }
}

TMA와 이중 버퍼링을 사용하여 cuBLAS보다 높은 성능을 내는 커스텀 행렬 곱셈 커널 예시

03
SASS 스케줄링 분석을 통해 커스텀 커널과 최적의 cuBLAS SGEMM 커널 사이의 미세한 성능 차이를 규명했다. NCU 프로파일링 데이터를 분석한 결과, 전문가용 GPU인 H200은 CUTLASS와 xmma 라이브러리를 혼합 사용하여 FMA 파이프라인의 82% 효율을 달성하는 반면, RTX GPU는 적절한 타일 크기 에스컬레이션이 이루어지지 않았다. 작성자의 커널은 단순한 구조임에도 불구하고 복잡한 라이브러리 조합 없이 높은 성능을 낼 수 있음을 입증했다.

용어 해설

cuBLAS
NVIDIA가 제공하는 GPU 가속 BLAS(Basic Linear Algebra Subprograms) 라이브러리로, 행렬 연산과 같은 선형 대수 계산을 최적화하여 수행하는 핵심 소프트웨어 구성 요소이다.
텐서 메모리 가속기(TMA)
Tensor Memory Accelerator의 약자로, NVIDIA Hopper 및 Blackwell 아키텍처에서 도입된 하드웨어 기능이며 전역 메모리와 공유 메모리 간의 데이터 전송을 비동기적으로 처리하여 연산 효율을 높인다.
SASS
NVIDIA GPU에서 실제로 실행되는 저수준 어셈블리 명령어로, 컴파일된 CUDA 코드가 하드웨어 스케줄러에 의해 어떻게 처리되는지 분석할 때 사용되는 최종 기계어 형태이다.
이중 버퍼링(Double Buffering)
데이터를 처리하는 동안 다음 데이터를 미리 로드하기 위해 두 개의 버퍼를 교대로 사용하는 기법으로, 메모리 대기 시간을 연산 시간과 중첩시켜 전체 처리량을 극대화하는 최적화 방식이다.
융합 곱셈 누산(FMA)
Fused Multiply-Add의 약자로, 곱셈과 덧셈을 하나의 명령어로 처리하는 연산 방식이며 부동 소수점 연산의 정밀도를 높이고 실행 속도를 단축시키는 핵심 연산 단위이다.

언급된 도구

cuBLAS비추천

NVIDIA GPU용 선형 대수 라이브러리

CUDA중립

병렬 컴퓨팅 플랫폼 및 프로그래밍 모델

NCU추천

NVIDIA Nsight Compute 프로파일링 도구

AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 04. 11.수집 2026. 04. 11.출처 타입 REDDIT

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.