연락처 정보

코스 개요

GPU 가속 컴퓨팅 소개

  • 이기종 컴퓨팅 및 CPU-GPU 아키텍처 개요
  • CUDA 실행 메커니즘과 다양한 메모리 영역
  • nvcc와 CMake를 활용한 CUDA C++ 컴파일 방법
  • GPU 개발 환경 점검 절차

Thrust 및 CUB을 활용한 병렬 알고리즘

  • GPU에서 실행되는 정렬, 축약 연산 및 변환 알고리즘
  • STL 기반 알고리즘을 GPU 실행에 맞게 리팩토링하는 방법
  • Thrust의 디바이스 벡터와 실행 정책 활용법
  • CUB을 이용한 사용자 정의 파이프라인 구현 기본 개념

GPU 메모리 아키텍처 및 관리 방법

  • 글로벌, 상수형, 텍스처 메모리의 특성 분석
  • 디바이스 메모리의 수동 할당 및 데이터 전송 절차
  • Unified Memory를 통한 데이터 접근 간편화 기법
  • 메모리 사용 패턴 최적화와 효율적인 액세스 방식

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

  • CUDA 스트림의 생성 및 관리 방법
  • 커널 실행과 데이터 전송 과정을 중첩시키는 방식
  • CUDA 이벤트를 이용한 작업 간 의존관계 관리
  • 스트림 우선순위 지정 및 동시성 튜닝 방법

커스텀 CUDA 커널 작성법

  • SIMT 프로그래밍 모델과 워프 단위 실행 구조 이해
  • 커널 실행 설정값 및 그리드-스트라이드 루프 활용법
  • 다차원 그리드 내 스레드 인덱스 관리 기법
  • 오류 처리와 CUDA 런타임 API 점검 절차

스레드 계층 구조 및 실행 모델 이해하기

  • 디바이스 코드 내 그리드, 블록, 스레드 관계 파악
  • 워프 단위 기본 연산과 배럴리지 작업 활용법
  • 블록 단위 동기화와 배리어 설정 방법
  • GPU 점유율 및 리소스 사용률 분석 절차

협력적 그룹을 통한 유연한 병렬 처리 기법

  • cooperative_groups API의 역할과 다양한 그룹 타입 설명
  • 스레드 블록 단위 분할 및 tiled_partition 활용법
  • 그리드 단위에서의 협력적 커널 실행 기법
  • 다중 그리드 간 동기화 패턴 구현 방법

공유 메모리 최적화 기법

  • 공유 메모리 뱅크 개념 및 충돌 회피 방안
  • 행렬 연산에 적합한 타일링 전략 활용법
  • 사용자가 직접 제어하는 캐시 역할을 하는 공유 메모리 이용법
  • cuda::shared_memory_mdspan을 통한 다차원 데이터 접근 방식

커널 융합 및 고급 병렬 패턴 활용하기

  • 여러 커널을 하나로 결합해 실행 오버헤드 줄이기
  • 스캔 연산, 키 기반 축약 처리 및 분할형 알고리즘 구현법
  • 원자적 연산 활용과 잠금 없는 데이터 구조 설계 방법
  • 워프 단위 원자적 작업으로 처리량 극대화하는 기법

Nsight Systems를 통한 성능 분석 및 최적화

  • CPU와 GPU 활동을 시각화한 타임라인 분석법
  • 메모리 전송 병목 지점 식별 기법
  • 커널 성능과 점유율 측정 방법 및 그 의미 파악
  • Nsight Compute를 활용한 반복적 최적화 절차

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

  • 커널 내 람다 표현식, constexpr, auto 활용법
  • C++17 병렬 알고리즘과 실행 정책의 디바이스 적용 가능성
  • C++20 개념 및 범위 라이브러리를 디바이스에서 활용하는 방법
  • nvcc와 CCCL 3.x에 포함된 C++23 지원 내용 소개

CUDA 그래프와 고급 비동기 처리 기법

  • CUDA 그래프의 정의 및 실행 절차 안내
  • 스트림 실행 내용을 바탕으로 그래프를 캡처하는 방법
  • 그래프 업데이트 및 조건부 실행 노드 관리 기법
  • 반복 작업에서 실행 지연 시간을 줄이기 위한 접근 방식

기존 애플리케이션에 GPU 가속 기능 통합 방법

  • C++ 인터페이스를 통해 GPU 코드를 외부와 연결하는 방식
  • 다중 GPU 및 NUMA 시스템을 효과적으로 관리하는 절차
  • CMake와 CUDA 연동을 통한 빌드 시스템 통합 방법
  • cuda-gdb를 활용해 디바이스 코드 디버깅하는 법

요약 및 모범 사례 소개

  • Thrust, CUB, 커스텀 커널 중 어떤 방식을 선택할지 판단 기준
  • 다양한 GPU 아키텍처 간 성능 호환성 유지 방법
  • CUDA 리소스 관리에 있어 RAII 패턴 활용법 및 코드 구성 전략
  • 향후 학습 방향과 고급 CUDA 관련 자료 소개

요건

  • 람다 표현식, 템플릿 및 STL에 대한 기본적인 C++ 역량 필요
  • 표준 알고리즘, 컨테이너, 이터레이터 사용 경험 필수
  • 반복문, 조건문 및 함수 사용에 익숙해야 함
  • CUDA 또는 GPU 프로그래밍에 대한 사전 지식은 요구되지 않음

대상 수강생

  • GPU를 활용해 연산 집약적 애플리케이션의 속도를 높이고자 하는 C++ 개발자
  • CPU 기반 프로그래밍에서 이기종 병렬 프로그래밍으로 전환하려는 소프트웨어 엔지니어
  • 대규모 데이터 세트를 다루는 성능 엔지니어 및 양적 분석 개발자
 8 시간

참가자 수


참가자별 가격

회원 평가 (3)

예정된 코스

관련 카테고리