본문 바로가기

AI Compiler framework

기존 GPU 라이브러리 동작 구조 확인 - cuBLAS, cuDNN Autotune

1️⃣ cuBLAS (특히 cuBLASLt) Autotune 구조

기본 아이디어

같은 GEMM이라도:

  • 타일 크기
  • Threadblock 구성
  • Split-K 여부
  • TensorCore 사용 여부
  • Accumulator precision
  • Epilogue fusion 여부

에 따라 완전히 다른 커널이 존재한다.

그래서 cuBLAS는 “하나의 GEMM 커널”이 아니라
수십~수백 개의 알고리즘 후보를 갖고 있다.


동작 흐름 (단순화 버전)

Step 1: Problem Descriptor 생성

 
(M, N, K, dtype, transA/B, stride, layout)
 

Step 2: Heuristic Filtering

  • alignment 조건
  • tensorcore 가능 여부
  • shared memory 제약
  • SM 아키텍처
  • workspace 제한

이 조건으로 후보 집합을 줄인다.


Step 3: 알고리즘 후보 생성

cuBLASLt는 다음 요소 조합으로 알고리즘 생성:

  • Tile size
  • Threadblock shape
  • Split-K depth
  • Reduction scheme
  • Epilogue type
  • Accumulator type

Step 4: Optional Benchmark (Autotune 모드)

사용자가 허용하면:

  • 각 후보를 실제로 몇 번 실행
  • latency 측정
  • fastest 선택

Step 5: 캐싱

shape + config 기준으로 결과 캐싱.

다음 호출 시 바로 해당 알고리즘 사용.


중요한 점

  • 의미 계약 분석 없음
  • 수치 안정성 분석 없음
  • reduction order 수학적 검증 없음

있어도:

“이 알고리즘은 안전하다고 알려져 있다” 수준

즉, 성능 중심 heuristic + 경험적 안정성

 

 

2️⃣ cuDNN Autotune 구조

cuDNN은 Convolution 중심.


동작 방식

Step 1: 여러 알고리즘 타입 존재

예:

  • Implicit GEMM
  • FFT
  • Winograd
  • Direct
  • Persistent kernel

Step 2: cudnnFind()

이 함수 호출 시:

  • 여러 알고리즘 실행
  • workspace 요구량 확인
  • 실행 시간 측정
  • fastest 반환

Step 3: Workspace 제약 고려

사용자가 허용한 메모리 한도 내에서 선택.


Convolution Backward

특히 backward에서:

  • atomic reduction 사용하는 fast 알고리즘 존재
  • deterministic 모드 켜면 해당 알고리즘 제외

이게 중요한 포인트다.

Deterministic 모드는:

일부 빠른 알고리즘을 강제로 제외

이건 의미 제약이라기보단 정책적 옵션


3️⃣ 공통 구조 요약


후보 알고리즘 많음 Yes
heuristic filtering Yes
실제 benchmark 실행 Often
workspace 고려 Yes
deterministic 옵션 Yes
의미 계약 기반 선택 No (암묵적)
수치 제약 명시화 No

 

4️⃣ 여기서 진짜 중요한 구조

Autotune의 핵심은:

 
Candidate Set
↓
Heuristic Filter
↓
(Optionally) Benchmark
↓
Fastest Select
↓
Cache
 

여기엔:

  • Algebraic Law 분석 없음
  • Numerics constraint 평가 없음
  • Effect 기반 legality check 없음

즉,

합법성 검증이 아니라 성능 최적 선택

이다.


5️⃣ 왜 이렇게 설계되었는가?

이유는 현실적이다:

  1. GEMM/Conv는 수학적으로 안정적
  2. 산업 workload는 경험적으로 안전
  3. 완전한 의미 분석은 비용 큼
  4. 성능이 가장 중요

즉, heuristic이 충분히 잘 작동한다.


6️⃣ 여기서 네가 갈 수 있는 차별화 지점

이제 명확해졌다.

산업 구조는:

Performance-first adaptive selection

네가 지향하는 구조는:

Semantic-constrained adaptive selection

차이는:

  • 후보 집합 생성 기준
  • legality 정의 방식
  • numerics 통제 방식
  • deterministic 처리의 철학

7️⃣ 가장 흥미로운 부분

cuBLAS/cuDNN도 내부적으로는:

  • deterministic 모드
  • math mode (tensorcore 허용 여부)
  • TF32 허용 여부

같은 정책이 있다.

하지만 이것들은:

글로벌 옵션

이지

연산자별 의미 계약

이 아니다.

여기서 네 시스템이 구조적으로 다를 수 있다.