GPU 시스템 18 - Tensor Core와 Mixed Precision
tensor core가 어떤 종류의 연산에서 큰 성능 차이를 만들고 mixed precision과 어떻게 연결되는지
compute-bound 영역에서 중요한 변화
지금까지는 memory traffic와 reduction, normalization처럼 memory-bound 성격이 강한 주제를 많이 봤다. 하지만 matmul 계열처럼 compute가 큰 연산에서는 tensor core와 mixed precision이 매우 중요해진다.
tensor core는 무엇을 해주는가
tensor core는 특정 형태의 matrix multiply-accumulate 연산을 매우 높은 throughput으로 수행하도록 설계된 하드웨어 경로다. 즉, 일반적인 scalar pipeline만 쓰는 것보다 훨씬 높은 성능을 낼 수 있다.
이 때문에 large GEMM, attention 내부 matmul, transformer block의 핵심 연산에서 tensor core 활용 여부가 큰 차이를 만든다.
실무적으로는 "matmul이 빠르다"를 더 세분화해서 봐야 한다. 단순 CUDA core 경로를 타는지, tensor core 친화적인 tile과 layout으로 들어가는지에 따라 성능 차이가 매우 크게 날 수 있다.
mixed precision과 왜 같이 이야기될까
tensor core는 보통 fp16, bf16 같은 lower precision 연산과 강하게 연결된다. 물론 accumulation이나 일부 경계에서는 더 높은 precision이 쓰일 수 있다. 그래서 mixed precision은 단순한 메모리 절약이 아니라, 하드웨어 최적 경로를 타기 위한 핵심 전략이기도 하다.
이 관점이 중요하다. mixed precision을 단순히 메모리 절약 기능처럼만 보면 절반만 본 셈이다. 실제로는 lower precision 덕분에 더 많은 데이터가 움직일 수 있고, 더 빠른 compute path를 타면서 전체 throughput이 올라간다.
tensor core를 제대로 쓰려면 무엇이 맞아야 하나
- tile shape가 하드웨어 경로와 맞아야 한다
- 데이터 layout이 적절해야 한다
- alignment와 packing이 잘 맞아야 한다
- 연산 precision과 accumulation precision 전략이 정리되어야 한다
항상 이득만 있을까
아니다. tensor core를 잘 활용하려면 데이터 layout, tile shape, alignment, precision handling이 맞아야 한다. 또한 numerical stability와 training quality도 함께 봐야 한다.
즉, tensor core 최적화는 하드웨어 경로를 적극 활용하는 대신 더 많은 제약을 받아들이는 작업이다.
예를 들어 training에서는 loss scaling이나 accumulation precision 같은 문제도 함께 봐야 한다. 성능만 보고 precision을 밀어붙이면 안정성이 깨질 수 있기 때문이다. 결국 mixed precision은 성능 최적화이면서 numerical engineering이기도 하다.
tensor core를 어디서 체감하나
실무에서는 아래처럼 체감되는 경우가 많다.
- GEMM throughput 차이가 매우 크게 난다
- transformer block에서 matmul 계열 시간이 확 줄어든다
- bf16/fp16 경로가 제대로 잡히지 않으면 기대 성능이 안 나온다
정리
tensor core와 mixed precision은 GPU 시스템에서 compute-heavy workload를 다룰 때 핵심이다. memory 최적화만으로는 안 되는 구간에서, 하드웨어가 제공하는 빠른 계산 경로를 제대로 타는 것이 큰 차이를 만든다.
이 단계에서 중요한 질문은 단순하다.
- 내 kernel이 정말 tensor core 친화적인 경로를 타고 있는가
- precision 선택이 성능과 안정성 사이에서 균형을 이루고 있는가
다음 글에서는 asynchronous copy와 pipelining을 보면서 memory load와 compute를 더 겹치는 고급 최적화 방향을 본다.