PyTorch 내부 구조 09 - C++ Extension의 기본 경로
C++ extension은 PyTorch runtime과 사용자 정의 연산을 연결하는 첫 번째 실전 관문이다
왜 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를 연결하는 흐름을 본다.