1. 목적과 배경
AICF 의 emit 계층은 코드 생성 단계가 아닌, 의미가 이미 해석된 연산을 실행 단위로 고정하는 단계
2. 고전 컴파일러 관점에서의 IR 재정의
2.1 고전적 IR 의 핵심 성질
Classical Compiler 에서 Intermediate Representation 은 다음 성질을 가진다
- 의미 보존적 Semantics-preserving
- 명령 단위 표현 instruction-level
- 입력과 출력의 명확한 관계
- 타겟 독립성 또는 제한적 타겟 의존성
- 최적화 패스의 입력으로 사용 가능
3. Emit IR 의 위치 정의 ( IR 레벨 구분 )
AICF 는 다음 IR 계층을 가진다
[ Python Layer / Builder 호출 ]
↓
[ AICF Logical IR ] ← 연산 의미 중심
↓
[ Emit IR (emit_resolved) ] ← 실행 단위 중심 (본 문서의 대상)
↓
[ CUDA Dispatch / Kernel ]
Machine IR 에 가깝고 Kernel-level IR 에 해당 ( 실제 ISA 가 아님 )
4. Emit IR = IR Instruction
4.1 기본 명제
emit_resolved 호출 1회 = IR instruction 1개
이는 고전 SSA-IR 의 다음과 대응
out = add a, c
5. 필드별 상세 대응 관계 ( add.emit 기준 )
emit_resolved(
b,
kind="add",
name=name,
inputs=[a, c],
outputs=[out],
kind_id=ctx.EltwiseAdd,
attr_schema=0,
attr_blob=b"",
attrs={},
constraints=constraints,
hints=hints,
)
5.1 kind - Logical Opcode
- 고전 IR : add, mul, fadd, ...
- AICF : kind = "add"
의미
- 연산의 논리적 의미
- backend 와는 분리된 symbolic opcode
- 문서, 디버그, 검증, IR dump 의 기준
언어적 IR 식별자
5.2 kind_id - Backend Opcode
- 고전 IR : Instruction selection 이후 opcode
- AICF : kind_id = ctx.EltwiseAdd
의미
- 타겟에서 실제 실행될 연산 ID
- emit 시점에 이미 lowering 완료되었음을 의미
5.3 inputs - SSA Use / Operand List
- 고전 IR : instruction operands
- AICF : inputs = [a, c]
의미
- 연산이 읽는 value id 목록
- 데이터 의존성의 명시적 표현
5.4 outputs - Definition / Destination
- 고전 IR : SSA def
- AICF : outputs = [out]
설계 의미
- GPU memory planning 친화적
- in-place / overwrite legality 표현 가능
- CUDA Graph 캡처 및 replay 와 직접 호환
5.5 타입 / Shape 정보
- 고전 IR : instruction 에 타입 포함
- AICF : value 에 타입 / shape 포함
5.6 attrs, attr_schema, attr_blob - Instruction Attributes
설계적으론
- 연산 변형
- 수치 옵션
- 커널 파라미터
등을 수용 가능, 확장 가능한 instruction attribute 공간
5.7 constraints - Legality Constraints
이 IR 은 어떻게 바꿀 수 있는가에 대한 규칙
5.8 hints - Optimization Metadata
의미에 영향을 주지 않는 최적화 가이드
'AI Compiler framework' 카테고리의 다른 글
| Linear layer 를 통한 설계 의도 관찰 (0) | 2026.02.03 |
|---|---|
| lower / optimize_plan 제거 파이프 라인 (0) | 2026.02.03 |
| AICF v2 실행 파이프라인 - 함수 단위 호출 트레이스 (0) | 2026.02.03 |
| AICF v2 실행 파이프라인 ( optimize 생략 버전 ) (0) | 2026.02.03 |
| Layer 내부에서의 emit 정의 및 사용 방식의 변경, 사전 정의 op emitter 의 생성으로 lower_ir_cuda 의 기능 축소, 전체 로직 간편화 (0) | 2026.02.02 |