1. 개요
연산 그래프를 Sparse Binary Adjacency Matrix 형태로 표현했음
기존 표현
A[i, j] = 1 if op_i → op_j (producer → consumer)
이는 연결 여부만 표현한다.
Rich Feature Matrix 는 이를 확장하여
A_rich[i, j] = bitmask
각 edge(연결) 에 대해 의미적 / 구조적 / 타입적 / 안정성 정보를 비트 단위로 인코딩한다.
이 행렬은 다음 목적을 가진다.
- 패턴 기반 fusion
- 안전성 필터링
- Layout-aware 최적화
- Backward-safe 분석
- Memory scheduling 판단
- Algebraic graph matching
2. 설계 철학
2.1 Edge vs Node 속성 분리
Rich Feature Matrix 는 Edge Feature 만 표현한다.
- Node 특성 -> 별도 diagonal selector S
- Edge 특성 -> A_rich[i, j]
이 분리는다음을 보장
- Node 의미론과 Edge 전이를 명확히 분리
- 패턴 매칭을 선형 대수 연산으로 유지 가능
- 확장 시 의미 충돌 방지
3. Bitmask 구조 (Bit Layout)
64-bit 공간을 4개의 주요 계층으로 분할하여 관리한다. ( 대략적으로 구성해 본 것 )
| Bits | 영역 | 주요 역할 |
| 00-15 | Safety & Correctness | 패턴 매칭 시 1차 필터링 (구조적 제약 조건) |
| 16-31 | Data Transition | DType, Layout, Shape 변형 정보 (DType은 4bit Enum 활용) |
| 32-47 | Fusion Eligibility | Optimizer Pass가 남기는 힌트 및 가능성 태그 |
| 48-63 | Reserved & Versioning | 향후 확장 및 스펙 버전 관리 |
3.1 Safety / Correctness (0-15)
| Bit | 이름 | 의미 |
| 0 | E_SAFE_SINGLE_USE | Producer의 Out-degree $\le 1$ (분기 없음) |
| 1 | E_NO_ALIAS | 메모리 Alias(별칭) 관계 없음 |
| 2 | E_CONTIGUOUS | 데이터가 메모리상에 연속적으로 배치됨 |
| 4 | E_INPLACE_OK | Consumer가 Input을 Inplace로 덮어쓰기 가능 |
| 6 | E_SIDE_EFFECT | Randomness 또는 Atomic 연산 등 부수효과 존재 |
3.2 Transition (16-31)
3.2.1 DType (16-19): 4-bit Enum Packing
- 0x1: F32, 0x2: F16, 0x3: BF16, 0x4: I32
- 추출 방식: (A_rich >> 16) & 0xF
3.2.2 Layout / Shape (20-26)
| Bit | 이름 | 의미 |
| 20 | L_TRANSPOSED | View가 Transpose된 상태로 전달됨 |
| 21 | L_STRIDED | Non-unit stride 존재 |
| 22 | L_BROADCASTED | Implicit/Explicit 브로드캐스트 발생 |
| 24 | L_REDUCED | 특정 축에 대해 Reduction이 수행된 결과 |