제12장. 동적 스케줄링, CUDA 그래프 및 장치 주도 커널 오케스트레이션
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
지금까지 개별 커널 수준에서 연산 및 메모리 처리량을 극대화했습니다. 이제 GPU가 유휴 상태가 되지 않도록 이러한 커널들을 오케스트레이션할 차례입니다.
이 장에서는 호스트에서의 스케줄링에서 장치 자체에서의 스케줄링으로 전환합니다. 빠른 L2 캐시 원자 연산으로 구동되는 동적 작업 대기열을 탐구하고, 반복되는 커널 실행을 통합하며, 고정된 파이프라인을 배치 처리하고 CPU 핸드셰이크를 최소화하기 위해 CUDA 그래프를 사용할 것입니다.
이후 장치 측 그래프 실행과 동적 병렬화를 통해 오케스트레이션을 한 단계 더 발전시킬 것입니다. 이를 통해 GPU가 CPU로 다시 호출할 필요 없이 다음 실행 작업을 스스로 결정할 수 있습니다.
마지막으로, 피어 투 피어 복사, NCCL 콜렉티브, CUDA 인식 MPI, NVSHMEM 일방적 풋/겟을 중첩하여 다중 GPU 환경을 심층적으로 다룹니다. 이를 통해 GPU 클러스터는 하나의 거대한 공유 메모리 코프로세서처럼 작동합니다. 예를 들어 NVIDIA의 DGX GB200 NVL72 시스템은 36개의 Grace CPU와 72개의 Blackwell GPU를 단일 NVLink 도메인으로 연결합니다. 이 도메인 내에서는 통합 주소 지정과 최대 30TB의 CPU 및 GPU 통합 메모리를 사용할 수 있습니다. 또한 72개 GPU 도메인 내 NVLink 패브릭을 통해 원격 HBM 접근이 가능합니다. 더 큰 NVLink 네트워크 토폴로지는 단일 랙을 넘어 확장될 수 있습니다.
이 과정에서 각 기법을 루프라인 분석과 연계하여 커널의 연산 집약도를 높이기 위한 적절한 도구(스트림, 그래프, 원자 연산, 동적 커널)를 선택하는 방법을 안내합니다. 이는 워크로드의 전반적인 성능 향상에 기여할 것입니다.
이 장을 마치면 다중 GPU 클러스터 전반에 걸쳐 모든 SM에 데이터를 공급하는 동적, 장치 기반, 그래프 기반 커널 오케스트레이션 기법을 이해하게 될 것입니다.
원자적 작업 대기열을 활용한 동적 스케줄링
스레드 간 작업 할당이 불균형하면 일부 SM은 유휴 상태인 반면 다른 SM은 계속 바쁘게 작동할 수 있습니다. 이는 컴퓨팅 자원을 낭비하고 전체 처리량을 저하시킵니다.
불균형은 입력 의존적 루프나 조건부 워크로드로 인해 서로 다른 스레드나 블록이 변동적인 양의 작업을 처리할 때 자주 발생합니다. 일부 블록은 빠르게 완료되어 해당 SM을 유휴 상태로 남겨두는 반면, 다른 SM들은 더 오래 실행되는 블록을 계속 처리합니다. 수백 개의 SM을 가진 현대 GPU에서는 작업이 균등하게 분배되지 않으면 유휴 기간 동안 많은 SM이 유휴 상태로 남을 수 있습니다. 이는 성능에 심각한 악영향을 미칠 수 있습니다.
가장 오래 걸리는 작업이 완료될 때까지 GPU의 일부가 유휴 상태로 남아 있습니다. 이는 많은 사이클 동안 활성 ...
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