목표
stage 1 에서 생성한 IRGraph 를 기반으로, 실행 가능한 backend op 리스트를 생성하고 dump 로 검증한다
Stage 2 에서 다루는 op 범위
- IR op : Linear, ReLU, MseGrad
- Lowered op : gemm, bias_add, relu, mse_grad
Stage 2 는 실행을 하지 않는다.
Lowering 규칙
Linear
IR
- Linear(x, W, b?) - y
Lowered
- gemm(x, W) - y with attrs = {"transB":True}
- bias_add(y, b) - y (bias 있을 때만, in-place write)
ReLU
IR
- ReLU(x) - y
Lowered
- relu(x) - y
MseGrad
IR
- MseGrad(pred, target) - dy
Lowered
- mse_grad(pred, target) - dY
- IR attrs scale 이 있으면 lowered attrs 로 전달
검증 결과
입력 IR (Stage 2)
- values : 10
- nodes : 4
- dataflow : Linear - ReLU - Linear - MseGrad
lowered 출력 (Stage 2)
- ops : 6
- gemm(v000, v001) - v003
- bias_add(v003, v002) - v003
- relu(v003) - v004
- gemm(v004, v005) - v007
- bias_add(v007, v006) - v007
- mse_grad(v007, v008) - v009
핵심 확인 포인트
- Linear 의 bias 가 있을 때 bias_add 가 동일 vid 로 in-place write 되는 것 확인
- IR vid 연결이 lowered 에서도 그대로 유지됨
- op 개수 / 순서가 예상과 동일
제한 사항
- Backward / optimizer / grad pool / relu_y_saved 등은 아직 포함하지 않음
- Lowered 가 요구하는 runtime tensor binding 은 Stage 3 에서 설계한다.
다음 단계 계획
Binding Plan 을 만들어서
- 어떤 vid 가 input / param / static-temp 인지 확정
- statc-temp 는 tuntime 에서 allocate
- input / param 은 외부에서 주입
을 명시적인 계획으로 저장하는 것
이걸 통해 이전에 문제가 됐던, env 가 꼬인다 / restore 후 stale pointer 류를 구조적 차단 가능
파일별 역할 정리
ir.py
IR 데이터 모델
- IRGraph : values + nodes 보관
- IRValue : vid + meta ( name / shape / dtype / device )
- IRNode : op + inputs / outpus + attrs
원칙
- core_v2 의 모든 상위 레이어는 ir.py 외 구조를 직접 정의하지 않는다.
trace.py
Tracing 컨텍스트
- trracing on/off 상태 관리
- 객체 / torch 핸들 - IRValue 캐시 제공
stage 2 에서의 핵심
- SymTensor identity 를 안정적으로 vid 에 매핑
- Stage 3+ 에서는 torch scalar 매핑을 추가로 활용 가능
ops.py
Tracing-only 연산 정의
- SymTensor : 실행 없는 메타 텐서
- liner / relu / mse_grad : IR emit 만 수행
원칙
- Stage 1 ~ 2 에서는 실제 backend 실행 금지
- shape check / 메타 생성은 여기서 담당
compile.py
IR 생성 진입점
- trace_ir - IRGraph
원칙
- compile.py 는 lowering / runtime / capture 를 모른다.
lower.py
IR - Lowered 변환
- lower_to_backend_ops(ir) - List[dict]
원칙
- in-place semantics 은 lowering 에서 표현한다
- Stage 3 에서 binding plan 을 만들 수 있도록 lowered 스키마는 일관 유지
'AI Compiler framework' 카테고리의 다른 글
| CUDA Backend v2 (core-free) Ops 마이그레이션 규칙 (0) | 2026.01.18 |
|---|---|
| Core v2 실행/캡처 문서 (Direct aicf_cuda._C, op_call only) (0) | 2026.01.16 |
| core_v2 Stage 1 : IR 표현 + Dump 검증 문서 (0) | 2026.01.14 |
| IR 기반 실행 위에 CUDA Graph Replay 를 얹는 실행 모델 설계 (0) | 2026.01.13 |
| 6.2 성공 케이스 문서화 : Warmup (no drift) + CUDA Graph Replay == IRExecutor (0) | 2026.01.12 |