목표
- 사용자 코드를 실행하지 않고 tracing-only IR 로 기록한다.
- IR 을 사람이 확인 가능한 형태로 dump 하여
- op 시퀀스
- 입력 / 파라미터 / 출력 텐서의 메타
- op 연결을 검증한다.
stage 1 에서는 다음만 다룬다.
- linear
- relu
- msegrad
구현 구성
파일 구조
aicf_fw/core_v2/
ir.py # IRGraph/IRValue/IRNode (SSA 기반 value id)
trace.py # tracing context + object/torch handle -> IRValue 캐시
ops.py # SymTensor + (Linear/ReLU/MseGrad) tracing-only ops
compile.py # trace_ir(step_fn) -> IRGraph
printer.py # dump_ir(ir) -> str
핵심 데이터 모델
IRValue
- id : 정수 vid
- name : 사람이 확인하는 이름
- shape : tuple
- dtype : string
- device : string
IRNode
- op : 문자열
- inputs : vid 리스트
- outputs : vid 리스트
- attrs : op 별 부가 정보
IRGraph
- values : vid - IRValue
- nodes : IRNode[]
Tracing 설계
TraceContext
- tracing 은 trace.py 가 전담
- tracing 중에만 IR emit 이 가능하다
캐시 정책
- SymTensor 기반 캐시
- 입력 / 파라미터 / 중간값을 동일 객체면 동일 IRValue 로 매핑
- torch tensor 핸들 기반 캐시
- key = (data_ptr, shape, dtype, device)
동일 SymTensor 객체가 여러 op 에 입력으로 들어갈 때, vid 가 안정적으로 재사용됨을 확인
Stage 1 테스트
테스트 스크립트
- SymTensor 로 x / t / W / b 를 선언
- step_fn 에서 다음 순서를 emit
- linear - lin0_out
- relu - relu0_out
- linear - lin1)out
- msegrad - dY
실제 dump 결과
IR values : 10, nodes : 4
values
- v001 : x (64, 8)
- v002 : 0.W (8, 8)
- v003 : o.b (8,)
- v004 : relu0_out (64, 8)
- v005 : 2.W (8, 8)
- v006 : 2.b (8,)
- v007 : lin1_out (64, 8)
- v008 : t (64, 8)
- v009 : dY (64, 8)
nodes
- #000 Linear (x, 0.W, 0.b) - lin0_out, bias = True
- #001 ReLU (lin0_out) - relu0_out
- #002 Linear (relu0_out, 2.W, 2.b) - lin1_out, ,bias = True
- #003 MseGrad (lin1_out, t) - dY
확인된 사항
- linear / relu / msegrad 의 데이터플로우가 vid 기준으로 정확히 연결됨
- 파라미터 이름과 IRValue 가 잘 보존됨
- attrs 출력이 기대한 형태로 표시
제한 사항
- 실행 ( backends op_call_out ) 은 없음
- backward / optimizer op 는 없음
- SSA / alias / in-place semantics 는 아직 다루지 않음
- dtype / device 는 문자열 저장
다음 계획
Stage 2 는 Lowering 출력 검증이 목표
'AI Compiler framework' 카테고리의 다른 글
| Core v2 실행/캡처 문서 (Direct aicf_cuda._C, op_call only) (0) | 2026.01.16 |
|---|---|
| core_v2 Stage 2 : Lowering 생성 + Dump 검증 문서 (1) | 2026.01.14 |
| IR 기반 실행 위에 CUDA Graph Replay 를 얹는 실행 모델 설계 (0) | 2026.01.13 |
| 6.2 성공 케이스 문서화 : Warmup (no drift) + CUDA Graph Replay == IRExecutor (0) | 2026.01.12 |
| AICF_fw / core 역할 문서 (0) | 2026.01.12 |