제9장. CUDA 커널 효율성 및 산술 집약도향상
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
대규모 병렬화와 높은 ILP로 지연 시간을 완전히 숨기더라도, 커널의 성능은 메모리 액세스당 수행하는 유용한 작업량에 의해 여전히 제한될 수 있습니다. 산술 집약도( 연산 집약도라고도 함) 는 메모리에서 전송된 데이터 바이트당 수행되는 부동 소수점 연산 횟수, 즉 바이트당 FLOPS를 측정합니다.
신규 GPU 세대는 메모리 대역폭을 훨씬 뛰어넘는 연산 처리량을 달성하고 있습니다. 이 격차 확대로 인해 산술 집약도 증대는 그 어느 때보다 중요해졌습니다. 높은 산술 집약도는 커널이 가져온 바이트당 더 많은 계산을 수행함을 의미하며, 이는 GPU의 연산 능력을 완전히 활용하는 데 필수적입니다.
산술 집약도는 루프라인 성능 모델 에서 핵심 지표입니다. 루프라인 모델은 커널 성능(FLOPs/초)을 산술 집약도(FLOPs/바이트)에 대해 그래프로 표시하는 유용한 시각화 도구입니다. 이 모델은 메모리 대역폭과 연산 처리량에 대한 하드웨어 상한선(루프라인)을 보여주어, 커널이 메모리 전송에 의해 성능이 제한되는 메모리 바운드 상태인지, 아니면 ALU 처리량에 의해 성능이 제한되는 컴퓨트 바운드 상태인지 확인할 수 있게 합니다.
실제 작업에서는 Nsight Compute와 같은 도구로 루프라인 차트를 생성할 수 있습니다. 이 도구에는 루프라인 분석 뷰가 포함되어 있습니다. 이를 통해 커널이 초기 단계에서 메모리 바운드인지 컴퓨트 바운디드인지 확인할 수 있으며, 최적화를 진행하면서 자질과 개선 효과 검증을 계속할 수 있습니다.
목표는 커널을 컴퓨팅 바운드 영역으로 밀어붙여 GPU의 증가하는 연산 성능을 활용하는 것입니다. 루프라인 성능 모델은 이러한 목표를 향해 최적화를 올바르게 안내할 수 있습니다.
이전 장에서 살펴본 바와 같이, 루프라인 차트는 하나의 수평선으로 하드웨어의 최대 연산 처리량(루프)을 나타내고, 원점에서 시작하는 대각선은 메모리 대역폭에 의해 제한되는 달성 가능한 최대 처리량을 나타냅니다. 커널의 산술 집약도는 x축 상의 위치를 결정하며, 그림 9-1과 같이 이러한 상한선과 성능을 비교할 수 있습니다.
그림 9-1. 예시 루프라인 모델 (GFLOP/s 대 FLOPs/바이트 단위의 산술 집약도)
산술 집약도가 낮은 커널(, 즉 이동된 데이터 바이트당 수학 연산이 적은 경우)은 메모리 속도에 바운디드를 받습니다. 이 경우 GPU가 연산보다 데이터 대기 시간에 더 많은 시간을 소비하므로 커널 속도는 하드웨어의 메모리 대역폭에 의해 바운디드를 받습니다.
반대로, 매우 높은 산술 집약도(이동된 바이트당 많은 FLOPs)를 가진 커널은 ALU와 텐서 코어를 최대 성능에 가깝게 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access