본문 바로가기

AI Compiler framework

AI Compiler Framework — Project Structure Overview

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 는 어떻게 할지