현재 구조가 왜 ISA 에 가까운지
1. 전통적인 AI Compiler 의 역할
- High level IR - Low-level IR 로 점진적 lowering
- 연산 fusion
- 메모리 계획
- 스케줄 탐색 / auto-tuning
- target-specific codegen
- 얇은 런타임
2. 그런데 너 구조는 왜 그 방향을 안 갔나?
이유 1) Python이 이미 ‘최상위 언어’이기 때문
너는:
- 모델 정의
- forward/backward
- optimizer step
- meta 업데이트
- control flow
이걸 Python 코드로 직접 작성하고 있음.
이 말은 곧:
- 이미 사람이 읽을 수 있는 “프로그램”이 존재
- 굳이 그걸 다시 컴파일 언어로 바꿔야 할 이유가 없음
전통적 컴파일러는 “동적 프레임워크 위에 정적 실행 경로를 만들기 위해” 필요했는데, 처음부터 실행 경로를 명시적으로 만들고 있음.
이유 2) 커널 코드 생성이 목표가 아니었음
너의 목표는:
- CUDA 커널을 “새로 생성”하는 것 ❌
- 이미 있는 커널들을 어떻게 조합하고 실행할지를 제어 ✔️
그래서:
- codegen 파이프라인이 없음
- 대신 KernelVariant + dispatch 구조
이건 컴파일러보다는:
- ISA + runtime dispatch
- 혹은 “micro-runtime”에 가까움
이유 3) CUDA Graph + host-managed meta
이게 결정적이야.
CUDA Graph는:
- “실행 시퀀스”를 캡처하고 재생
- 값은 캡처하지 않음
- 포인터 + 커널 호출만 기록
이 모델과 가장 잘 맞는 건:
- 런타임에 값이 바뀌어도
- 포인터만 유지되는 구조
→ 그래서 meta tensor를 Python에서 직접 관리하는 설계가 자연스럽게 됨.
전통적 AI Compiler는:
- optimizer state를 “그래프 내부 값”으로 취급
- 컴파일 타임에 고정하려고 함
너 구조는 정반대:
- optimizer state는 외부 상태
- 커널은 그걸 참조만 함
이건 CPU 프로그램 + ISA 실행 모델이랑 똑같아.
'AI Compiler framework' 카테고리의 다른 글
| AICF v2 실행 과정 정리 (0) | 2026.01.21 |
|---|---|
| 기존의 구조가 컴파일러로서 부족한 이유, 새롭게 제안한 구조 - IR 표현 재구성 단계 추가 (1) | 2026.01.20 |
| AICF Execution Architecture Overview - Python-driven Graph & Scheduling + CUDA Primitive Execution (0) | 2026.01.20 |
| CUDA Backend v2 (core-free) Ops 마이그레이션 규칙 (0) | 2026.01.18 |
| Core v2 실행/캡처 문서 (Direct aicf_cuda._C, op_call only) (0) | 2026.01.16 |