본문 바로가기

AI Compiler framework

compiler 의 분리와 optimize_ir 의 과정 추가 - 일단 훅만 구성

  • compile_cuda 는 실행할 프로그램을 만드는 단계
  • run_compiled 는 이미 만들어진 계획을 실제 텐서에 적용해 실행하는 단계

optimize_ir 는 자리를 미리 만들어둔 훅, 현재는 identity

 

전엔 run 이 다 했음

  • feed bind + allocate
  • lower
  • op_call 루프
  • outputs 반환

run 이 컴파일 + 런타임을 동시에 수행했음

 

지금 구조 ( compile / run 분리 )

compile_cuda 가 담당하는 것 = 컴파일러 역할

  • optimize_ir(b) : IR 을 바꿀 수 있는 자리 ( 현재는 통과 )
  • lower_ir_cuda(b, registry)
    • IR kind - kind_id / schema (matching)
    • attrrs(dict) - attr_blob(bytes) (ABI pack)
    • LoweredOp 리스트 생성
  • make_exec_plan_cuda(b, lowered)
    • alias / inplace 같은 실행 의사 결정
  • 결과 : CompiledProgram

즉 여기서 실행에 필요한 메타를 확정

 

run_compiled 가 담당하는 것 = 런타임 역할

  • feed 를 slots에 꽂고
  • 나머지 value 는 spec 으로 allocate
  • plan.alias 를 적용해서 slots alias
  • plan.lowered 를 op_call 순서대로 실행
  • outputs 반환

확정된 Plan 을 그대로 재생