본문 바로가기

AI Compiler framework

최소 의미 분해 단계 설정 - 왜 Kernel 코드 이하의 표현을 IR 로 사용하지 않는가

IR 은 단순한 중간 표현이 아니라 의미를 보존하면서 변환과 최적화를 가능하게 하는 최소 단위여야 한다.

왜 GPU kernel 코드 (.cu) 보다 더 낮은 단계 ( PTX, SASS, ISA ... )를 IR 의 표현 단위로 채택하지 않은지에 대한 설명

 

1. 의미 분해 목적 정의

여기서 말하는 semantics 란.

  •  연산의 수학적 구조
  •  텐서 간 관계
  • 연산 순서와 결합 방식
  • 성능과 직결되는실행 전략의 선택 결과

단순한 수식이 아닌, 의미 + 실행 의도가 결합된 상태 가 의미 단위의 범위

 

2. Kernel 코드는 의미가 닫히는 마지막 지점

  • 연산 의미가 명시적으로 드러남
  • 실행 전략이 의도적으로 선택되어 있음
  • 컴파일러에 의해 임의로 변형되기 전의 상태

커널 코드가 상위 IR 의 lowering 결과이자, 하위 ISA 로 내려가기 직전의 마지막 의미 보존 계층

 

3. PTX / SASS 는 의미 IR 로 부적절

3.1 의미 손실

  • loop, tile, reduction 구조가 instruction sequence 로 붕괴
  • 고수준 연산 개념이 복원 불가능

3.2 비결정성

 

의미 분해의 목적은 구현이 아닌 의미 보존, kernel 코드 이후 단계는 의미를 보존하지 않음