연락처 정보
 기간 28 시간

코스 개요

소개

  • CUDA란 무엇인가?
  • CUDA vs OpenCL vs SYCL
  • CUDA 기능 및 아키텍처 개요
  • 개발 환경 설정

기초 습득

  • Visual Studio Code를 사용하여 새로운 CUDA 프로젝트 생성
  • 프로젝트 구조 및 파일 탐색
  • 프로그램 컴파일 및 실행
  • printf 및 fprintf를 사용하여 출력 표시

CUDA API

  • 호스트 프로그램에서 CUDA API의 역할 이해
  • CUDA API를 사용하여 디바이스 정보 및 기능 조회
  • CUDA API를 사용하여 디바이스 메모리 할당 및 해제
  • CUDA API를 사용하여 호스트와 디바이스 간 데이터 복사
  • CUDA API를 사용하여 커널 실행 및 스레드 동기화
  • CUDA API를 사용하여 오류 및 예외 처리

CUDA C/C++

  • 디바이스 프로그램에서 CUDA C/C++의 역할 이해
  • CUDA C/C++를 사용하여 GPU에서 실행되고 데이터를 조작하는 커널 작성
  • CUDA C/C++ 데이터 유형, 한정자, 연산자, 표현식 사용
  • 수학, 원자(atomic), 워프(warp) 등 CUDA C/C++ 내장 함수 사용
  • threadIdx, blockIdx, blockDim 등 CUDA C/C++ 내장 변수 사용
  • cuBLAS, cuFFT, cuRAND 등 CUDA C/C++ 라이브러리 사용

CUDA 메모리 모델

  • 호스트와 디바이스 메모리 모델의 차이 이해
  • 글로벌, 공유, 상수, 로컬 등 CUDA 메모리 공간 사용
  • 포인터, 배열, 텍스처, 서피스 등 CUDA 메모리 객체 사용
  • 읽기 전용, 쓰기 전용, 읽기-쓰기 등 CUDA 메모리 접근 모드 사용
  • CUDA 메모리 일관성 모델 및 동기화 메커니즘 사용

CUDA 실행 모델

  • 호스트와 디바이스 실행 모델의 차이 이해
  • 병렬성을 정의하기 위해 CUDA 스레드, 블록, 그리드 사용
  • threadIdx, blockIdx, blockDim 등 CUDA 스레드 함수 사용
  • __syncthreads, __threadfence_block 등 CUDA 블록 함수 사용
  • gridDim, gridSync, cooperative groups 등 CUDA 그리드 함수 사용

디버깅

  • CUDA 프로그램의 일반적인 오류 및 버그 이해
  • Visual Studio Code 디버거를 사용하여 변수, 브레이크포인트, 호출 스택 등 검사
  • Linux에서 CUDA-GDB를 사용하여 CUDA 프로그램 디버깅
  • CUDA-MEMCHECK를 사용하여 메모리 오류 및 누락 탐지
  • Windows에서 NVIDIA Nsight를 사용하여 CUDA 프로그램 디버깅 및 분석

최적화

  • CUDA 프로그램 성능에 영향을 미치는 요인 이해
  • 메모리 대역폭을 향상시키기 위한 CUDA 코일레싱 기술 사용
  • 메모리 레이턴시를 줄이기 위한 CUDA 캐싱 및 선취기 기술 사용
  • 메모리 접근 및 대역폭을 최적화하기 위한 CUDA 공유 메모리 및 로컬 메모리 기술 사용
  • 실행 시간 및 자원 활용률을 측정 및 개선하기 위한 CUDA 프로파일링 및 프로파일링 도구 사용

요건

  • C/C++ 언어 및 병렬 프로그래밍 개념에 대한 이해
  • 컴퓨터 아키텍처 및 메모리 계층 구조에 대한 기본 지식
  • 명령줄 도구 및 코드 편집기 사용 경험

대상 독자

  • CUDA를 사용하여 NVIDIA GPU를 프로그래밍하고 그 병렬성을 활용하고자 하는 개발자
  • 다양한 CUDA 디바이스에서 실행될 수 있는 고성과 및 확장 가능한 코드를 작성하고자 하는 개발자
  • GPU 프로그래밍의 저레벨 측면을 탐구하고 코드 성능을 최적화하고자 하는 프로그래머

참가자 수


참가자별 가격

예정된 코스

관련 카테고리