AI 모델 - IR - 실행 계획 - CUDA 커널로 내려가는 컴파일러형 런타임을 목표로 한다
빌드, 링크, 실행이 가능한 최소 골격 확립, 이후 확장은 해당 구조를 유지하며 진행
최상위 디렉토리 구조
ai-compiler-framework/
├─ include/
├─ src/
├─ examples/
├─ docs/
├─ build/ (gitignore)
├─ CMakeLists.txt
└─ .gitignore
include : 외부 API
src : 내부 구현
해당 분리는 라이브러리/컴파일러 프로젝트의 기본 전제
include / - Public API Layer
include/aicf/
├─ core/
│ ├─ status.hpp
│ └─ log.hpp
├─ runtime/
│ ├─ graph.hpp
│ └─ stream.hpp
└─ ir/
├─ ir.hpp
└─ lowering.hpp
역할
- 프레임워크 사용자가 직접 포함하는 헤더
- CUDA 구현 세부사항을 최대한 숨김
- AI compiler 의 ㅡ개념적 인터페이스를 정의
핵심 설계 의도
- include 안에서는 cuda_runtime.h 를 직접 include 하지 않는다
- 실행 환경은 src/ 에서만 다룬다
src/ - Implementation Layer
src/
├─ core/
│ ├─ status.cpp
│ └─ log.cpp
├─ runtime/
│ ├─ graph.cpp
│ ├─ capture_plan.cpp
│ └─ graph_exec.cpp
├─ ir/
│ ├─ ir.cpp
│ └─ lowering.cpp
└─ backends/
└─ cuda/
├─ cuda_context.cu
└─ nvtx.cu
core/
프레임워크 공통 기반
- 에러 코드, 로깅, 전역 정책
- CUDA/IR/Runtime 어디서든 의존 가능
runtime/
실행의 중심
- Graph : 실행 단위의 논리적 표현
- CapturePlan : CUDA Graph capture 전략
- GraphExec : 캡쳐된 그래프의 실행 흐름
AI compiler 의 정체성은 runtime 에 있다. IR 은 수단이고, 최종 목표는 결정적 실행
ir/
컴파일러 레이어
- IRNode, IRGraph 연산을 표현하는 중간 표현
- lowering : IR - Runtime Graph 로 변환
현재는 더미, 이후
- tile
- reduction
- layout
- memory space
같은 정보가 여기에 쌓인다
backends/ cuda/
하드웨어 특화 구현
- CUDA context / stream 관리
- NVTX / profiling hook
- 이후
ops/
├─ gemm/
│ ├─ api.hpp
│ ├─ launcher.cu
│ └─ kernels.cuh
└─ elementwise/
이 구조는 IR 과 커널을 분리하기 위한 전제
IR 은 무엇을 할지, backend 는 어떻게 할지
'AI Compiler framework' 카테고리의 다른 글
| CUDA Elementwise 커널 구현 및 Nsight Compute 분석 문서화 (AICF - Torch 커널 대체의 첫 단계) (0) | 2025.12.18 |
|---|---|
| AICF 초기 프레임워크 구조 정립 및 커널 관측에 대한 기록 - 초기 Pytorch 구현 이유, 실제 커널 실행 흐름 관찰 (0) | 2025.12.17 |
| aicf 의 메커니즘과 ge_v2 와의 비교 (0) | 2025.12.17 |
| AI Compiler 각 파이프라인 단계 역할 이해하기 (0) | 2025.12.12 |
| Pattern matching vs Compiler - 어떤 점이 달라져야 하는가 ( 일련의 컴포넌트를 따라 변환 ) (0) | 2025.12.12 |