제6장. GPU 아키텍처, CUDA 프로그래밍 및 점유율 극대화
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
이 장에서는 먼저 단일 명령 다중 스레드(SIMT) 실행 모델을 검토하고, 워프, 스레드 블록, 그리드가 GPU 기반 알고리즘을 스트리밍 멀티프로세서(SM)에 매핑하는 방식을 살펴보겠습니다.
현대 NVIDIA GPU에서의 SIMT 실행 모델을 검토하며, 워프, 스레드 블록, 그리드가 SM에 매핑되는 방식을 포함합니다. 이어서 CUDA 프로그래밍 패턴을 심층적으로 다루고, 온칩 메모리 계층 구조(레지스터 파일, 공유/L1, L2, HBM3e)를 논의하며, 텐서 메모리 가속기(TMA)와 텐서 코어 연산의 누산기 역할을 하는 텐서 메모리(TMEM)를 포함한 GPU의 비동기 데이터 전송 기능을 시연합니다.
또한 컴퓨팅 바운드 커널과 메모리 바운드 커널을 식별하기 위한 루프라인 분석을 소개합니다. 이는 현대 GPU 시스템을 이론적 최대 처리량 한계까지 끌어올리기 위한 기초를 제공할 것입니다.
GPU 아키텍처 이해
CPU가 낮은 지연 시간의 단일 스레드 성능을 위해 명령어-명령어 간 연산( )을 최적화하는 것과 달리, GPU는 수천 개의 스레드를 병렬로 실행하도록 설계된 처리량 최적화 프로세서입니다. CPU와 GPU 간 간단한 CUDA 프로그래밍 흐름은 그림 6-1에 표시되어 있습니다.
그림 6-1. 간단한 CUDA 프로그래밍 흐름
초기 단계에서 호스트는 데이터를 CPU 메모리에 로드합니다. 이후 CPU에서 GPU 메모리로 데이터를 복사합니다. GPU 메모리의 데이터를 사용하여 GPU 커널을 호출한 후, CPU는 결과를 GPU 메모리에서 CPU 메모리로 다시 복사합니다. 이제 결과는 추가 처리를 위해 CPU에 저장됩니다.
GPU는 그림 6-1에 설명된 CPU-GPU 데이터 전송과 같은 데이터 전송 지연 시간을 숨기기 위해 대규모 병렬 처리에 의존합니다. 각 GPU는 다수의 SM(Streaming Multiprocessor)으로 구성되며, 이는 CPU 코어와 유사하지만 병렬 처리에 최적화되어 있습니다. 각 SM은 Blackwell 아키텍처에서 최대 64개의 워프(32개 스레드 그룹)를 추적할 수 있습니다.
각 GPU에는 다수의 SM이 포함됩니다. 이는 CPU 코어와 유사하지만 처리량에 최적화되어 있습니다. 현대 GPU에서 각 SM은 최대 64개의 워프(2,048개 스레드)를 동시에 추적합니다. Blackwell GPU는 SM당 64K 32비트 레지스터(총 256KB)와 SM당 통합 256KB L1 캐시/공유 메모리를 특징으로 합니다. 해당 SRAM 중 최대 228KB(사용 가능 227KB)를 SM당 사용자 관리 공유 메모리로 구성할 수 있습니다. 단일 스레드 블록은 ...
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