연락처 정보

코스 개요

서론

  • GPU 프로그래밍이란 무엇인가요?
  • 왜 GPU 프로그래밍을 사용해야 할까요?
  • GPU 프로그래밍의 어려움과 트레이드오프는 무엇인가요?
  • GPU 프로그래밍용 프레임워크와 도구에는 어떤 것들이 있나요?
  • 애플리케이션에 적합한 프레임워크와 도구를 어떻게 선택할까요?

OpenCL

  • OpenCL이란 무엇인가요?
  • OpenCL의 장점과 단점은 무엇인가요?
  • OpenCL 개발 환경을 어떻게 설정하나요?
  • 벡터 덧셈을 수행하는 기본적인 OpenCL 프로그램을 작성해봅니다.
  • OpenCL API를 활용해 디바이스 정보 조회, 메모리 할당/해제, 호스트와 디바이스 간 데이터 전송, 커널 실행 및 스레드 동기화 방법을 배웁니다.
  • OpenCL C 언어를 이용해 디바이스에서 실행되는 커널을 작성하고 데이터 조작하는 법을 익힙니다.
  • 내장 함수, 변수, 라이브러리를 활용해 공통적인 작업들을 처리하는 방법을 알아봅니다.
  • 글로벌, 로컬, 상수값, 프라이빗과 같은 메모리 영역 활용법을 통해 데이터 전송 및 접근 효율화 기법을 배웁니다.
  • 워크 아이템, 워크 그룹, ND-레인지 등의 실행 모델 제어를 통한 병렬 처리 설계 방법을 습득합니다.
  • CodeXL과 같은 도구를 이용해 OpenCL 프로그램 디버깅 및 테스트 기법을 익힙니다.
  • 데이터 결합화, 캐싱, 프리페칭, 프로파일링과 같은 최적화 기법을 활용하여 성능 개선 방법을 학습합니다.

CUDA

  • CUDA란 무엇인가요?
  • CUDA의 장점과 단점은 무엇인가요?
  • CUDA 개발 환경을 어떻게 설정하나요?
  • 벡터 덧셈을 수행하는 기본적인 CUDA 프로그램 작성 연습을 합니다.
  • CUDA API를 활용해 디바이스 정보 조회, 메모리 할당/해제, 호스트와 디바이스 간 데이터 전송, 커널 실행 및 스레드 동기화 방법을 익힙니다.
  • CUDA C/C++ 언어로 작성한 코드가 디바이스에서 어떻게 실행되는지 학습하고 데이터 조작도 해봅니다.
  • 내장 함수, 변수, 라이브러리를 활용해 일반적인 작업 처리 방법을 알아봅니다.
  • 글로벌, 공유, 상수값, 로컬과 같은 메모리 영역 최적화 기법에 대해 배웁니다.
  • 스레드, 블록, 그리드로 구성된 실행 모델 제어를 통해 병렬 처리의 원리를 파악합니다.
  • CUDA-GDB, CUDA-MEMCHECK, NVIDIA Nsight와 같은 도구 활용법을 통해 디버깅 및 테스트 기법을 학습합니다.
  • 데이터 결합화, 캐싱, 프리페칭, 프로파일링 등의 기법을 적용해 CUDA 프로그램 최적화 방법을 익힙니다.

ROCm

  • ROCm이란 무엇인가요?
  • ROCm의 장점과 단점은 무엇인가요?
  • ROCm 개발 환경 설정 방법에 대해 알아봅니다.
  • 벡터 덧셈을 수행하는 기본적인 ROCm 프로그램 작성 연습을 진행합니다.
  • ROCm API를 활용해 디바이스 정보 조회, 메모리 할당/해제, 데이터 전송, 커널 실행 및 스레드 동기화 방법을 습득합니다.
  • ROCm C/C++ 언어로 작성한 코드가 디바이스에서 어떻게 실행되는지 파악하고 데이터 조작 기법도 연습해봅니다.
  • 내장 함수, 변수, 라이브러리를 활용해 일반적인 작업 처리 방법을 배웁니다.
  • 글로벌, 로컬, 상수값, 프라이빗과 같은 메모리 영역 최적화 기법을 알아봅니다.
  • 스레드, 블록, 그리드로 구성된 실행 모델 제어를 통해 병렬 처리의 원리를 익힙니다.
  • ROCm Debugger와 ROCm Profiler 같은 도구 활용법을 배워 디버깅 및 성능 분석 기법을 익힙니다.
  • 데이터 결합화, 캐싱, 프리페칭, 프로파일링 등의 방법을 적용해 프로그램 최적화 기술을 학습합니다.

HIP

  • HIP이란 무엇인가요?
  • HIP의 장점과 단점은 무엇인가요?
  • HIP 개발 환경 설정 방법에 대해 알아봅니다.
  • 벡터 덧셈을 수행하는 기본적인 HIP 프로그램 작성 연습도 합니다.
  • HIP 언어를 활용해 디바이스에서 실행되는 커널을 작성하고 데이터 조작 방법을 배웁니다.
  • 내장 함수, 변수, 라이브러리를 활용해 공통적인 작업 처리 방식을 익힙니다.
  • 글로벌, 공유, 상수값, 로컬과 같은 메모리 영역 최적화 기법에 대해 학습합니다.
  • 스레드, 블록, 그리드로 구성된 실행 모델 제어를 통해 병렬 처리 원리를 파악합니다.
  • ROCm Debugger와 ROCm Profiler 같은 도구 활용법을 배워 디버깅 및 테스트 기법을 익힙니다.
  • 데이터 결합화, 캐싱, 프리페칭, 프로파일링 등의 방법으로 프로그램 최적화 기술을 습득합니다.

비교 분석

  • OpenCL, CUDA, ROCm, HIP 각각의 특징과 성능, 호환성에 대한 비교를 해봅니다.
  • 벤치마크 및 다양한 측정 지표를 활용해 GPU 프로그램의 성능을 평가하는 방법을 배웁니다.
  • GPU 프로그래밍 시 반드시 준수해야 할 모범 사례와 팁도 알아봅니다.
  • 현재 및 미래의 GPU 프로그래밍 동향과 당면 과제들에 대해서도 탐구해봅니다.

요약 및 향후 학습 방향

요건

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

대상 수강생

  • GPU 프로그래밍 기초 및 주요 프레임워크에 대해 배우고자 하는 개발자
  • 다양한 플랫폼과 디바이스에서 실행 가능한 이식성 높고 확장성이 뛰어난 코드를 작성하려는 개발자
  • GPU 프로그래밍의 장점 및 최적화 기법을 탐구하고 싶은 프로그래머
 21 시간

참가자 수


참가자별 가격

예정된 코스

관련 카테고리