1) 목적
그래프 내에서 퓨전 가능한 연산 묶음을 찾아 Forward 를 통합하고, Backward 훅을 주입해 커널 / 런타임 최적화를 하기 위한 규칙 엔진
2) 현재 방식 : 행렬 기반 패턴 매칭 + 비트 마스크는 보조 필터
2.1 데이터 모델
- 노드: builder.ops[i]
- 값 : vid 로 식별, val_to_producer[vid] = producer_op_index
- edge : producer i -> consumer j
2.2 A_rich (rich adjacency)
- A_rich[i, j] 의 data 에 edge 조건 플래그를 bitset 으로 저장
즉, 지금 비트마스크는 엣지 i -> j 가 안전 / 유효한가 만 담고 있음
2.3 S(kid) (opkind 선택 행렬)
- S[kid] 는 대각 행렬로, 특정 kind_id 를 갖는 노드만 선택하는 마스크 역할
여기서 Gemm - Bias - Relu 가 명시적으로 kind_id 에 박혀버림
2.4 패턴 탐색 방식
- A_valid : A_rich 에서 required bit 만족하는 에싲만 남겨 0/1 인접 행렬로 만든 것
- 그 다음
- G - B 연결
- B - R 연결
- G - B - R 경로 존재
- nonzero 를 뽑아 (i, j, k) 패턴으로 복원
2.5 리라이트
- op_g 를 fused op 로 치환
- bwd_emit_fn 훅 주입
- 중간 노드를 nop 로 무효화
3. 현재 방식의 장점
- 패턴 탐색이 선언적
- 엣지 필터링은 빠름
- 구현 난이도 대비 결과가 즉시 나옴
4. 현재 방식의 한계
4.1 룰이 kind_id 에 강결합
- S 로 노드를 고르는 순간, 룰은 opkind 기반 패턴 매칭이 됨
- 새로운 변형을 늘릴수록 S 종류가 늘고 룰이 분기 폭발
4.2 비트 마스크가 엣지 조건에만 국한
- 실제 퓨전 가능성은 노드 특성 쪽이 더 크고 복잡
- 현재는 dtype 정도만 부분적 반영
4.3 SAFE_NODE 정의가 거침
- out-degree <= 1 은 분기 없음 힌트 일 뿐이고
- view / alias,
- in-place
- 저장 / 재사용
- side effect
같은 것들을 충분히 대표하지 못함
4.4 행렬곱 방식은 정밀 검증이 약하다
- G - B - R 경로가 있어도
- 진짜 bias 인지
- Relu 가 Gemm 출력만 소비하는지
- 중간 텐서가 다른 곳에서도 쓰이는지
- shape 일치 / 타입 일치
같은 조건을 별도 검증하지 않으면 오탐 가능
4.5 리라이트 안정성
5. 개선 방향 : 비트마스크 기반 후보 필터 + 로컬 구조 탐색 + 정밀 검증으로 전환
- S 제거 혹은 최소화
- kind_id 가 아니라 속성으로 룰을 정의
- 탐색은 CSR 기반 이웃 순회로 구현
- 최종 fuse 는 정밀 검증을 통과한 경우만 적용
'AI Compiler framework' 카테고리의 다른 글
| GEMM Epilogue (Gemm + Bias (+ReLU)) 반영 및 수정 문서 (0) | 2026.02.28 |
|---|---|
| AICF IR Flag System 도입 문서 (0) | 2026.02.27 |
| AICF Rich-Matirx Fusion Compile Pipeline ( Concept & Rules ) (0) | 2026.02.25 |
| AICF Rich Feature Matrix Specification - 연결 그래프에 비트 표현을 통한 각 operator 정보 표현 (0) | 2026.02.25 |
| AI Compiler의 의미론적 최적화 구조 분석 - Rule_based Graph Rewrite vs RFM Algebraic Approach (0) | 2026.02.24 |