1. Emit 의 정의
1.1 Emit 은 무엇인가
다음을 만족하는 IR 의 최소 lowering 표현 단위
- 런타임이 직접 실행 가능한 단위
- 의미적 계약을 가짐
- 그래프 변형의 최소 안정 단위
즉, Emit 은 단순한 DAG 노드가 아닌
입력을 상태를 받아 출력 상태를 생성하는 계약을 가진 원자적 상태 변환자 (State Transformer)
lowering 의 종착점이 아니라, 더 상위 Emit 으로 치환될 수 있는 컴파일 단위
2. Emit 의 구성 요소
2.1 Semantics Layer
- kind
- attr_schema
- attr_blob
- 수학적 의미 태그
예
- add
- relu
- reduce_sum
- adam_step
- fused_gemm_bias_relu
해당 레이어가 무엇을 계산하는가를 정의
2.2 Interface Layer
- inputs
- outputs
- dtype
- rank
- shape relation
입출력 구조를 정의
2.3 Contract Layer
Emit 이 제공하고 요구하는 정보
(A) Effect Contract
각 텐서에 대해
None < Read < Write < ReadWrite
예
- relu : input=Read, output=Write
- adam_step : P = ReadWrite, M = ReadWrite, V = ReadWrite, G = Read
이 정보는 재배치 / 결합 legality 의 핵심
(B) Alias Contract
MustAlias
MayAlias
NoAlias
Unknown
Fuse legality 는 이 lattice 위에서 meet 로 판정
(C) Shape / Stride Contract
정보 정밀도 격자
Unknown
↑
Known rank
↑
Known shape
↑
Known contiguous
contiguous 여부는 fused kernel 선택에 직접 영향
(D) Numeric Semantics Contract
- exact math op tag
- acuumulation dtype
- determinism
- rounding policy
예
- fp 16 acccumulate vs fp32 accumulate
- atomic reduction 여부
(E) ABI / Materialization Contract
- rank0 scaler view 필요 여부
- explicit contiguous 필요 여부
- alignment requirement
이것은 최종 lowering 단계에서만 사용
3. Information Lattice 모델
EmitContract 는 단순 dict 이 아닌 각 항목은 격자 lattice 위에서 존재
- 여러 Emit 을 결합할 때 정보 요약 가능
- 새 Emit 의 요구사항 충족 여부 판정 가능
- 제거 가능 여부 판정 가능
4. 두 가지 정보 결합 방향
Emit 결합 시 정보는 두 방향으로 움직인다
4.1 제약 정보
합칠수록 조건이 강해짐
- fused kernel 은 모든 입력이 contiguous 여야 한다
- dtype 은 동일해야 한다
- 중간 write-effect 있으면 reorder 불가
4.2 구성 정보
합칠수록 조건이 늘어남
- bias 값
- activation 종류
- epsilon
- scaling factor
새 emitter attrs 는
attrs_new = derive( attrs_1 ∨ attrs_2 ∨ ... )
5. Emit 컴파일의 형식적 정의
Emit 들의 부분 그래프 S 에 대해
5.1 정보 수집
F = Join(Provides_i for i in S)
C = Meet(Constraints_i for i in S)
5.2 후보 Emit E* 가 있을 때
E* 는 다음을 가진다
- Requires(E*)
- Build(E*, F)
치환 조건
F ⊢ Requires(E*)
하위 Emit 정보로부터 상위 Emit 요구 조건을 증명 가능해야 한다.
5.3 치환
성공 시
S → E*
E* 의 Contract 는
Contract(E*) = Derive(F)
6. Emit 제거 (Elimination)
N -> 0 치환
예
reshape 제거 조건
- storage 동일
- stride 동일
- ABI 요구 없음
충분히 정밀한 정보가 있어야 제거 가능
7. Emit 삽입 (Materialization)
Constraints 를 만족시키기 위해 삽입되는 Emit
- contiguous
- cast
- transpose
- expand
최적화는 제거만이 아닌 삽입도 포함
8. Emit 최소 Lowering 단위의 의미
다음을 만족해야 한다
- 독립적 계약 단위
- 격자 정보의 안정적 축적 단위
- 상위 Emit 으로 치환 가능한 단위
Emit 을 더 쪼개면
- 계약 정보 분산
- fuse 판정 복잡도 폭증
Emit 을 너무 크게 만들면
- 결합 기회 감소
의미적 안정성과 결합 가능성 사이의 균형점
9. 전체 컴파일 흐름
Sem-Graph (Emit DAG)
↓
Contract Propagation (정보 정밀화)
↓
Rewrite / Fuse / Eliminate / Insert
↓
Optimized Emit Graph
↓
Final Lowering (ABI / Launch / Kernel Selection)'AI Compiler framework' 카테고리의 다른 글
| AICFv2: 연산자 일반화 및 시스템 통합 아키텍처 보고서 (0) | 2026.02.22 |
|---|---|
| 미분 그래프 구성 방식에 대한 변경 - layer 순회에서 최적화된 emit 표현의 역순회 (0) | 2026.02.21 |
| AICF v2 실행 흐름 & 개선안 : 훈련 전체 CUDA Graph 캡처 + Replay 설계 문서 (0) | 2026.02.20 |
| AICF v2 기술 설계 및 구현 명세서 (0) | 2026.02.17 |
| AICF v2 통합 역전파 설계 (Integrated Autodiff Design) (0) | 2026.02.17 |