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️⃣ 왜 이렇게 설계되었는가?
이유는 현실적이다:
- GEMM/Conv는 수학적으로 안정적
- 산업 workload는 경험적으로 안전
- 완전한 의미 분석은 비용 큼
- 성능이 가장 중요
즉, heuristic이 충분히 잘 작동한다.
6️⃣ 여기서 네가 갈 수 있는 차별화 지점
이제 명확해졌다.
산업 구조는:
Performance-first adaptive selection
네가 지향하는 구조는:
Semantic-constrained adaptive selection
차이는:
- 후보 집합 생성 기준
- legality 정의 방식
- numerics 통제 방식
- deterministic 처리의 철학
7️⃣ 가장 흥미로운 부분
cuBLAS/cuDNN도 내부적으로는:
- deterministic 모드
- math mode (tensorcore 허용 여부)
- TF32 허용 여부
같은 정책이 있다.
하지만 이것들은:
글로벌 옵션
이지
연산자별 의미 계약
이 아니다.
여기서 네 시스템이 구조적으로 다를 수 있다.
'AI Compiler framework' 카테고리의 다른 글
| Runtime Optimization in Deep Learning Frameworks and AI Compilers (0) | 2026.03.07 |
|---|---|
| Plan Compiler ( Execution Planner Compiler ) (0) | 2026.03.05 |
| AICF V2: Bit-Pattern Driven Graph Fusion & Composite Autograd System (0) | 2026.03.01 |
| GEMM Epilogue (Gemm + Bias (+ReLU)) 반영 및 수정 문서 (0) | 2026.02.28 |
| AICF IR Flag System 도입 문서 (0) | 2026.02.27 |