문의를 보내주셔서 감사합니다! 팀원이 곧 연락드리겠습니다.
예약을 보내주셔서 감사합니다! 저희 팀 멤버 중 한 분이 곧 연락드리겠습니다.
코스 개요
소개
- CUDA란 무엇인가?
- CUDA와 OpenCL, SYCL의 비교
- CUDA의 특징 및 아키텍처 개요
- 개발 환경 설정 방법
시작하기
- Visual Studio Code를 사용한 새로운 CUDA 프로젝트 생성
- 프로젝트 구조와 파일 구성 살펴보기
- 프로그램 컴파일 및 실행 절차
- printf 및 fprintf을 활용해 출력 결과 확인하기
CUDA API
- 호스트 프로그램에서 CUDA API의 역할 이해
- 디바이스 정보와 기능을 조회하는 데 사용되는 CUDA API
- 디바이스 메모리 할당 및 해제를 위한 CUDA API 활용
- 호스트와 디바이스 간 데이터 전송에 필요한 CUDA API
- 커널 실행 지시 및 스레드 동기화를 수행하는 CUDA API
- 오류 및 예외 상황을 처리하는 방법
CUDA C/C++
- 디바이스 프로그램에서 CUDA C/C++의 역할 파악
- GPU에서 실행되는 커널 작성과 데이터 조작을 위한 CUDA C/C++ 활용법
- 데이터 타입, 한정자, 연산자 및 표현식 사용 방법
- 수학 함수, 원자적 연산 기능, 워프 등의 내장 함수 사용법
- threadIdx, blockIdx, blockDim와 같은 내장 변수 활용 방안
- cuBLAS, cuFFT, cuRAND 등 다양한 라이브러리 활용 방법
CUDA 메모리 모델
- 호스트 및 디바이스 메모리 모델의 차이점 설명
- 글로벌, 공유, 상수, 로컬 메모리 영역을 통한 최적화 기법 활용
- 포인터, 배열, 텍스처 및 서피스 등과 같은 CUDA 메모리 객체 이해
- 읽기 전용/쓰기 전용/읽고 쓰기 가능 등 다양한 접근 모드 설정법
- 메모리 일관성 유지 기법과 스레드 간 동기화 방법
CUDA 실행 모델
- 호스트 및 디바이스 실행 모델의 차이점 이해
- 스레드, 블록, 그리드를 활용한 병렬 처리 구성법
- threadIdx, blockIdx, blockDim 등 스레드 관련 함수 설명
- __syncthreads, __threadfence_block와 같은 블록 수준 동기화 함수 사용법
- gridDim, gridSync, 협력적 그룹 활용을 위한 그리드 관련 함수
디버깅
- CUDA 프로그램에서 흔히 발생하는 오류 및 버그 유형 파악
- Visual Studio Code 디버거를 이용한 변수 검사, 중단점 설정, 호출 스택 확인 방법
- Linux 환경에서 CUDA-GDB 활용해 CUDA 프로그램 디버깅하기
- CUDA-MEMCHECK을 사용해 메모리 오류 및 누수 현상 탐지법
- Windows 플랫폼에서 NVIDIA Nsight로 프로그램 분석 및 디버깅 수행법
최적화
- CUDA 프로그램 성능에 영향을 미치는 요인들 살펴보기
- 메모리 대역폭 향상을 위한 데이터 결합(coalescing) 기법 적용
- 지연 시간 감소를 위한 캐싱 및 프리페칭 기술 활용 방법
- 메모리 접근과 대역폭을 최적화하기 위한 공유 메모리, 로컬 메모리 사용법
- 실행 시간 측정 및 리소스 활용 효율성 개선을 위한 프로파일링 기법 및 도구 활용법
요약 및 향후 학습 방향
요건
- C/C++ 언어 및 병렬 프로그래밍 개념에 대한 이해
- 컴퓨터 아키텍처와 메모리 계층 구조에 대한 기본 지식
- 명령줄 도구 및 코드 에디터 사용 경험
대상 수강생
- CUDA를 활용해 NVIDIA GPU 프로그래밍과 병렬 처리 기능을 활용하고자 하는 개발자들
- 다양한 CUDA 지원 하드웨어 환경에서 고성능이며 확장 가능한 코드 작성을 원하는 개발자들
- GPU 프로그래밍의 저수준 측면을 탐구하고 코드 성능을 최적화하고자 하는 프로그래머들
28 시간