연락처 정보

코스 개요

CPU/GPU 아키텍처 소개 및 가속화 컴퓨팅

  • 이종 컴퓨팅과 CPU-GPU 아키텍처
  • CUDA 실행 및 메모리 공간
  • nvcc와 CMake를 통한 CUDA C++ 컴파일
  • GPU 개발 환경 검증

Thrust와 CUB의 병렬 알고리즘

  • GPU 가속화된 정렬, 리듀스(Reduce), 변환(Transform)
  • GPU 실행을 위한 STL 알고리즘 리팩토링
  • Thrust 디바이스 벡터와 실행 정책
  • 맞춤형 파이프라인을 위한 CUB 디바이스 전반의 추상화(Primitives)

GPU 메모리 아키텍처 및 관리

  • 글로벌, 컨스턴트, 텍스처 메모리 유형
  • 명시적 디바이스 메모리 할당 및 전송
  • 단순화된 데이터 접근을 위한 유니파이드 메모리(Unified Memory)
  • 메모리 콜레스킹(Memory Coalescing)과 접근 패턴 최적화

CUDA 스트림을 활용한 비동기 실행

  • CUDA 스트림 생성 및 관리
  • 커널 실행과 데이터 전송의 병렬 처리(Overlapping)
  • 종속성 관리를 위한 CUDA 이벤트
  • 스트림 우선순위 및 동시성 튜닝

맞춤형 CUDA 커널 작성

  • SIMT 프로그래밍 모델과 워프(Warp) 실행
  • 커널 레이아웃 설정 및 그리드 스트라이트 루프(Grid-stride Loop)
  • 스레드 인덱싱과 다차원 그리드
  • 에러 처리와 CUDA 런타임 API 확인

스레드 계층 구조 및 실행 모델

  • 디바이스 코드의 그리드, 블록, 스레드
  • 워프 레벨 추상화와 ballot 연산
  • 블록 레벨 동기화 및 배리어(Barriers)
  • 점유율(Occupancy) 및 리소스 활용도 분석

유연한 병렬성을 위한 협력 그룹(Cooperative Groups)

  • cooperative_groups API와 그룹 유형
  • 스레드 블록 타일과 tiled_partition
  • 그리드 레벨 협력 실행(Launches)
  • 멀티 그리드 동기화 패턴

공유 메모리 최적화 기술

  • 공유 메모리 뱅크와 뱅크 충돌 방지
  • 행렬 연산을 위한 타일링 전략
  • 사용자가 관리하는 캐시로서의 공유 메모리
  • 다차원 뷰를 위한 cuda::shared_memory_mdspan

커널 융합( Kernel Fusion) 및 고급 병렬 패턴

  • 레이치 오버헤드 절감을 위한 다중 커널 융합
  • 스캔, 키별 리듀스(Reduce-by-key), 세그멘티드 알고리즘
  • 원자적 연산과 락 프리(Lock-free) 데이터 구조
  • 처리량 향상을 위한 워프 집합 원자적 연산(Warp-aggregated Atomics)

Nsight Systems를 통한 프로파일링 및 최적화

  • CPU 및 GPU 활동의 타임라인 분석
  • 메모리 전송 병목 현상 식별
  • 커널 성능 및 점유율 프로파일링
  • Nsight Compute를 통한 반복적 최적화

CUDA 디바이스 코드의 현대적 C++ 기능

  • 커널 내 람다, constexpr, auto 사용법
  • C++17 병렬 알고리즘 및 실행 정책
  • 디바이스 상에서 사용하는 C++20 컨셉(Concepts)과 레인지(Ranges)
  • nvcc 및 CCCL 3.x에서의 C++23 지원

CUDA 그래프 및 고급 비동기화

  • CUDA 그래프 정의 및 실행
  • 스트림 실행 기반 그래프 캡처
  • 그래프 업데이트 및 조건부 실행 노드
  • 반복적 워크로드를 위한 레이치 지연 시간 단축

기존 애플리케이션을 위한 통합 패턴

  • C++ 인터페이스 뒤에서 GPU 코드 래핑하기
  • 멀티 GPU 및 NUMA 시스템 관리
  • CMake와 CUDA를 통한 빌드 시스템 통합
  • cuda-gdb를 사용한 디바이스 코드 디버깅

요약 및 모범 사례

  • Thrust, CUB, 맞춤형 커널 중 선택하기
  • GPU 아키텍처 간 성능 이식성<\/li>
  • CUDA 리소스를 위한 코드 조직화 및 RAII<\/li>
  • 향후 학습을 위한 심화 CUDA 학습 경로<\/li>

요건

  • 람다 표현식, 템플릿, STL을 포함한 기본 C++ 역량
  • 표준 알고리즘, 컨테이너, 반복자에 대한 경험
  • 반복문, 조건문, 함수에 대한 숙달
  • CUDA 또는 GPU 프로그래밍 지식은 필수 아님

대상 수강생

  • GPU를 통해 컴퓨팅 집약형 애플리케이션을 가속화하고자 하는 C++ 개발자
  • CPU 전용 환경에서 이종 병렬 프로그래밍으로 전환하는 소프트웨어 엔지니어
  • 대규모 데이터셋을 다루는 성능 엔지니어 및 정량가(Quantitative Developer)들
 8 시간

참가자 수


참가자별 가격

회원 평가 (3)

예정된 코스

관련 카테고리