문의를 보내주셔서 감사합니다! 팀원이 곧 연락드리겠습니다.
예약을 보내주셔서 감사합니다! 저희 팀 멤버 중 한 분이 곧 연락드리겠습니다.
코스 개요
소개
- GPU 프로그래밍이란 무엇인가?
- 왜 GPU 프로그래밍을 사용해야 하는가?
- GPU 프로그래밍의 어려움과 단점은 무엇인가?
- 주요 GPU 프로그래밍 프레임워크에는 어떤 것들이 있는가?
- 애플리케이션에 적합한 프레임워크를 선택하는 방법
OpenCL
- OpenCL이란 무엇인가?
- OpenCL의 장점과 단점은 무엇인가?
- OpenCL 개발 환경을 설정하는 방법
- 벡터 덧셈을 수행하는 기본 OpenCL 프로그램 작성하기
- OpenCL API를 사용해 장치 정보 조회, 메모리 할당 및 해제, 호스트와 장치 간 데이터 전송, 커널 실행 및 스레드 동기화 수행하기
- OpenCL C 언어를 이용해 장치에서 실행되는 커널을 작성하고 데이터 조작하기
- OpenCL의 내장 함수, 변수 및 라이브러리를 활용해 일반적인 연산 처리하기
- 전역 메모리, 로컬 메모리, 상수 메모리, 프라이빗 메모리 등의 메모리 영역을 활용해 데이터 전송 및 접근 최적화하기
- 워크아이템, 워크그룹 및 ND-레인지를 제어하는 OpenCL 실행 모델 이해하기
- CodeXL과 같은 도구를 사용해 OpenCL 프로그램 디버깅 및 테스트하기
- 데이터 병합, 캐싱, 프리페칭, 프로파일링 등의 기법을 활용해 OpenCL 프로그램 최적화하기
CUDA
- CUDA란 무엇인가?
- CUDA의 장점과 단점은 무엇인가?
- CUDA 개발 환경을 설정하는 방법
- 벡터 덧셈을 수행하는 기본 CUDA 프로그램 작성하기
- CUDA API를 사용해 장치 정보 조회, 메모리 할당 및 해제, 호스트와 장치 간 데이터 전송, 커널 실행 및 스레드 동기화 수행하기
- CUDA C/C++ 언어를 이용해 장치에서 실행되는 커널을 작성하고 데이터 조작하기
- CUDA의 내장 함수, 변수 및 라이브러리를 활용해 일반적인 연산 처리하기
- 전역 메모리, 공유 메모리, 상수 메모리, 로컬 메모리 등의 메모리 영역을 활용해 데이터 전송 및 접근 최적화하기
- 스레드, 블록 및 그리드로 구성된 CUDA 실행 모델 이해하기
- CUDA-GDB, CUDA-MEMCHECK, NVIDIA Nsight와 같은 도구를 사용해 CUDA 프로그램 디버깅 및 테스트하기
- 데이터 병합, 캐싱, 프리페칭, 프로파일링 등의 기법을 활용해 CUDA 프로그램 최적화하기
ROCm
- ROCm이란 무엇인가?
- ROCm의 장점과 단점은 무엇인가?
- ROCm 개발 환경을 설정하는 방법
- 벡터 덧셈을 수행하는 기본 ROCm 프로그램 작성하기
- ROCm API를 사용해 장치 정보 조회, 메모리 할당 및 해제, 호스트와 장치 간 데이터 전송, 커널 실행 및 스레드 동기화 수행하기
- ROCm C/C++ 언어를 이용해 장치에서 실행되는 커널을 작성하고 데이터 조작하기
- ROCm의 내장 함수, 변수 및 라이브러리를 활용해 일반적인 연산 처리하기
- 전역 메모리, 로컬 메모리, 상수 메모리, 프라이빗 메모리 등의 메모리 영역을 활용해 데이터 전송 및 접근 최적화하기
- 스레드, 블록 및 그리드로 구성된 ROCm 실행 모델 이해하기
- ROCm Debugger와 ROCm Profiler와 같은 도구를 사용해 ROCm 프로그램 디버깅 및 테스트하기
- 데이터 병합, 캐싱, 프리페칭, 프로파일링 등의 기법을 활용해 ROCm 프로그램 최적화하기
비교 분석
- OpenCL, CUDA, ROCm 각각의 기능, 성능 및 호환성을 비교해보기
- 벤치마크와 지표를 활용해 GPU 프로그램 평가하기
- GPU 프로그래밍 시 유용한 모범 사례 및 팁 익히기
- GPU 프로그래밍의 현재 동향과 향후 과제에 대해 알아보기
요약 및 다음 단계
요건
- C/C++ 언어와 병렬 프로그래밍 개념에 대한 기초 지식
- 컴퓨터 아키텍처 및 메모리 계층 구조에 대한 이해
- 명령줄 도구 및 코드 편집기 사용 경험
대상 수강생
- 다양한 GPU 프로그래밍 프레임워크를 활용해 프로그램을 개발하고 그 기능, 성능 및 호환성을 비교하고자 하는 개발자
- 여러 플랫폼과 장치에서 실행 가능한 이식성 높고 확장성이 좋은 코드를 작성하려는 개발자
- GPU 프로그래밍 및 최적화 과정의 장단점과 어려움을 탐구하고자 하는 프로그래머
28 시간