왜 연산을 합칠까

fused operator는 보통 다음을 줄이기 위해 등장한다.

  • kernel launch overhead
  • intermediate tensor materialization
  • 불필요한 global memory traffic

즉 fusing의 핵심은 "연산 수를 줄였다"보다 "메모리 왕복을 줄였다"에 가깝다.

하지만 항상 좋은 것은 아니다

  • code complexity가 크게 늘 수 있다
  • backward 구현이 어려워진다
  • operator semantics를 기존과 맞추기 어렵다

그래서 fusion은 hotspot이 명확할 때 적용하는 편이 좋다.

다음 글에서는 AMP, autocast, numerical stability를 본다. 고성능 operator는 dtype과 안정성 문제를 함께 관리해야 한다.