현재 흐름
1. 그래프 작성
- build 에서 linear / relu / save / mse_grad / linear_bwd / sgd_step 같은 고수준 op 호출
2. trace - IR 생성
- trace_ir(build)
- 결과 : IRGraph(values, nodes)
- nodes 에는 Linear, ReLU, LinearBwd, SgdStep 같은 IR op 가 들어있음
3. lower Stage A ( 구조적 lowering + 기본 kid 박제 )
- lower_to_backend_ops(ir)
- 여기서 하는 일
- 고수준 op 를 primitive op 분해
- Linear - gemm + bias_add
- LinearBwd - gemm (dx) + gemm (dw) + reduce_sum (db)
- 동시에 op / dtype 기반으로 kernel_id 를 1차로 박제
- gemm_f16_tc_wmma_out_f16_v0
- reduce_sum_keep_lastdim_f16_v0
- copy_f16_v0, mse_grad_f16_v0 등
- 고수준 op 를 primitive op 분해
즉 StageA 는 IR 재구성 (lowering) + 기본 매핑 단계
4. (선택) opt pass
- LoweredOps 가 있었던 케이스는
- gemm + bias_add + relu 를 gemm_epilogue 로 합치는 rewrite / fusion pass
5. Stage B = kernel_select / upgrade (형상 기반 최종 결정 박제)
- apply_kernel_decisions_stageB
- 여기서 하는 일
- 형상 기반 variant 업그레이드
- lastdim 이 짝수면
- bias_add_f16_v0 → bias_add_f16_vec2_v0
- relu_f16_v0 → relu_f16_vec2_v0
- sgd_step_f16_v0 → sgd_step_f16_half2_v0
- 그리고 결과를 lowered 에 kernel_id 로 다시 써서 최종 결정이 박제
6. plan 메모리 바인딩
7. exec 결정 박제 기반 실행
'AI Compiler framework' 카테고리의 다른 글
| 전통적인 컴파일러의 흐름 (0) | 2026.01.24 |
|---|---|
| 커널 선택 기반 방식 vs 수식적 최적화 기반 AI Compiler (0) | 2026.01.23 |
| lower.py 의 기능 추가를 통한 AI compiler 로서의 역할 수행하도록 만들기~ (0) | 2026.01.22 |
| AICF 실행 흐름 ( nn - trace - IR - lower - plan - runtime - CUDA backend ) (0) | 2026.01.22 |
| AICF Framework - Execution & Synchronization Model (0) | 2026.01.22 |