Puzzle 30: GPU 프로파일링

올바른 코드, 그 너머로

참고: 이 파트는 호환되는 NVIDIA GPU 전용입니다

이 챕터에서는 동작하는 GPU 코드를 고성능 코드로 탈바꿈시키는 체계적 성능 분석을 소개합니다. 정확성과 GPU 기능에 집중했던 이전 퍼즐들과 달리, 여기서는 실무 GPU 소프트웨어 개발에서 사용되는 프로파일링 방법론을 탐구합니다.

학습 내용:

  • 전문 프로파일링 도구: 종합적인 성능 분석을 위한 NSight Systems와 NSight Compute
  • 성능 탐정 작업: 프로파일러 데이터를 활용한 병목과 최적화 기회 파악
  • 메모리 시스템 통찰: 메모리 접근 패턴이 성능에 미치는 극적인 영향 이해
  • 반직관적인 발견: “좋아 보이는” 지표가 오히려 성능 문제를 가리키는 경우
  • 근거 기반 최적화: 가정이 아닌 프로파일러 데이터에 기반한 최적화 판단

왜 중요한가: 대부분의 GPU 튜토리얼은 기본적인 성능 개념만 가르치지만, 실제 GPU 개발에서는 실질적인 병목을 찾아내고, 메모리 시스템 동작을 이해하며, 근거 있는 최적화 결정을 내리기 위한 체계적 프로파일링 방법론이 필요합니다. 이런 역량이 학술적 예제와 실무 GPU 컴퓨팅 사이의 격차를 메워줍니다.

개요

GPU 성능 프로파일링은 체계적 분석을 통해 올바른 코드를 고성능 코드로 변환합니다. 이 챕터에서는 실무 GPU 개발에서 사용되는 전문 프로파일링 도구와 탐정 방법론을 살펴봅니다.

핵심 학습 목표:

  • 프로파일링 도구 선택법 학습 - NSight Systems와 NSight Compute를 언제 사용하는지 이해
  • 성능 탐정 능력 개발 - 실제 프로파일러 출력을 활용하여 병목 식별
  • 반직관적인 통찰 발견 - GPU 메모리 시스템과 캐싱 동작에 대한 새로운 시각
  • 근거 기반 최적화 학습 - 가정이 아닌 프로파일러 데이터에 기반한 최적화

핵심 개념

전문 프로파일링 도구:

  • NSight Systems (nsys): CPU-GPU 조율과 메모리 전송을 위한 시스템 전체 타임라인 분석
  • NSight Compute (ncu): 메모리 효율과 연산 활용도를 위한 상세 커널 분석
  • 체계적 방법론: 근거 기반 병목 식별과 최적화 검증

발견하게 될 핵심 통찰:

  • 반직관적 동작: 높은 캐시 히트율이 실제로는 낮은 성능을 나타내는 경우
  • 메모리 접근 패턴: 병합이 대역폭 활용에 미치는 극적인 영향
  • 도구 기반 최적화: 성능 가정이 아닌 프로파일러 데이터를 활용한 의사결정

구성

요구 사항:

  • NVIDIA GPU: 프로파일링이 활성화된 CUDA 호환 하드웨어
  • CUDA Toolkit: NSight Systems 및 NSight Compute 도구
  • 빌드 설정: 디버그 정보가 포함된 최적화 코드 (--debug-level=full)

방법론:

  1. NSight Systems를 활용한 시스템 전체 분석으로 주요 병목 식별
  2. NSight Compute를 활용한 커널 심층 분석으로 메모리 시스템 분석
  3. 프로파일러 데이터를 활용한 근거 기반 결론으로 최적화 방향 도출

퍼즐 구성

이 챕터는 서로 연결되어 점진적으로 발전하는 두 개의 구성 요소로 이루어져 있습니다:

NVIDIA 프로파일링 기초

실제 프로파일러 출력을 사용한 실습 예제를 통해 NVIDIA 프로파일링 생태계의 핵심을 배웁니다.

학습 내용:

  • 시스템 전체 타임라인 분석과 병목 식별을 위한 NSight Systems
  • 상세 커널 분석과 메모리 시스템 통찰을 위한 NSight Compute
  • 실무 GPU 개발에서 사용되는 전문 프로파일링 워크플로우와 모범 사례

캐시 히트의 역설

동일한 벡터 덧셈 커널 세 개가 극적으로 다른 성능을 보이는 미스터리를 프로파일링으로 풀어봅니다.

도전 과제: 캐시 히트율이 가장 높은 커널이 성능은 가장 낮은 이유를 밝혀내세요 - CPU 중심의 전통적인 성능 관념을 뒤집는 반직관적 통찰입니다.

탐정 능력: 실제 NSight Systems와 NSight Compute 데이터를 활용하여 메모리 병합 효과와 근거 기반 최적화를 이해합니다.

시작하기

학습 경로:

  1. NVIDIA 프로파일링 기초 - NSight Systems와 NSight Compute 학습
  2. 캐시 히트의 역설 - 성능 미스터리 풀기에 능력 적용

사전 준비:

  • GPU 메모리 계층 구조와 접근 패턴
  • GPU 프로그래밍 기초 (스레드, 블록, 워프, 공유 메모리)
  • 커맨드라인 프로파일링 도구 사용 경험

학습 성과: 실무 GPU 개발에서 사용되는 체계적 병목 식별과 근거 기반 최적화를 위한 전문가 수준의 프로파일링 역량.

이 챕터는 체계적 프로파일링이 직관이 놓치는 진실을 드러낸다는 것을 알려줍니다 - GPU 성능 최적화는 가정이 아닌 도구 기반의 발견이 필요합니다.

추가 자료: