compile 파이프라인에서 각 단계가 보는 것
1) b0 = m.b
Layer.emit 으로 쌓인 IR 의 원본
2) b1 = optimize_ir(b0)
아직 identity
3) lowerd = lower_ir_cuda(b1, registry)
핵심 IR - 실행 가능 단위 변환
- b1.ops 순회
- op.kind 를 registry 에서 탐색
- op.attrs 를 kernel ABI 가 요구하는 attr_blob 로 패킹
- lop 같은 lowered op 리스트 생성
4) plan = make_exec_plan_cuda(b1, lowered)
여기서 plan 의 생성 메모리 / alias / workspace / 실행 순서
이걸 executor 가 실행
5) plan = optimize_plan(plan)
이것도 아직 identity
compiler 에서 하는 불변 가공을 줄여서 emit 단계에서 더 많은 걸 준비하는 것에 대해
여기서 emit 된 정보에 대해서 op.kind, reigistry 등의 가공들이 추가됨, 이는 근데 변경되지 않는 정보로, 처음 model.builder 에 전달 될 때, 아예 다 추가, 가공된 정보를 emit 하는 것에 대해 고민,
cuda_exec 에서의
- run
- compile_cached
- compile
- compile_cuda
- optimize_ir
- lower_ir_cuda
- make_exec_plan_cuda
- optimize_plan
해당 과정에서 lower_ir_cuda 부분에서의
- lower_ir_cuda
- registry.lookup
- pack_attrs
해당 부분의 emit 정보를 통한 데이터 가공, 추가 부분이 존재, 이걸 초기 emit 단계에 포함시키는 것에 대해 고민
'AI Compiler framework' 카테고리의 다른 글
| AICF v2 실행 파이프라인 ( optimize 생략 버전 ) (0) | 2026.02.03 |
|---|---|
| Layer 내부에서의 emit 정의 및 사용 방식의 변경, 사전 정의 op emitter 의 생성으로 lower_ir_cuda 의 기능 축소, 전체 로직 간편화 (0) | 2026.02.02 |
| CUDA Graph Capture / Replay 설계 정리 (0) | 2026.02.01 |
| AICF v2 - Online Accumulative Optimization 설계 문서 ( 여기서 Compiler 의 완성 ) (0) | 2026.01.31 |
| alias / inplace 에 대해... - 메모리 / 실행 전략에 관한 결정 (0) | 2026.01.31 |