왜 C++ extension부터 보는가

PyTorch internals를 공부하는 많은 이유는 결국 custom operator를 붙이기 위해서다. 이때 가장 자연스러운 첫 단계가 C++ extension이다.

이 계층에서 해야 하는 일은 대략 이렇다.

  • operator schema 결정
  • 입력 tensor 검증
  • backend별 구현 연결
  • Python에서 호출 가능한 인터페이스 제공

중요한 것은 "경계" 이해다

C++ extension은 단순 빌드 작업이 아니다. Python object에서 ATen tensor로, 다시 backend kernel 호출로 넘어가는 경계를 이해해야 한다. 이 경계를 모르면 custom kernel을 붙여도 integration이 깨지기 쉽다.

다음 글에서는 CUDA extension으로 내려가 실제 device kernel과 PyTorch operator를 연결하는 흐름을 본다.