연락처 정보

코스 개요

개요

  • OpenCL이란 무엇인가?
  • OpenCL vs CUDA vs SYCL 비교
  • OpenCL의 주요 기능 및 아키텍처 개요
  • 개발 환경 설정 방법

시작하기

  • Visual Studio Code를 활용한 새로운 OpenCL 프로젝트 생성
  • 프로젝트 구조 및 파일 구성 탐색
  • 프로그램 컴파일 및 실행 방법
  • printf와 fprintf를 이용한 출력값 표시법

OpenCL API

  • 호스트 프로그램에서 OpenCL API의 역할 이해
  • 장치 정보 및 기능을 조회하기 위한 OpenCL API 활용법
  • 컨텍스트, 커맨드 큐, 버퍼, 커널 및 이벤트를 생성하는 방법
  • 읽기, 쓰기, 복사, 매핑, 언매핑, 실행 명령 등을 대기열에 추가하는 방식
  • 오류 및 예외 처리를 위한 OpenCL API 사용법

OpenCL C 언어

  • 장치 프로그램에서 OpenCL C의 역할 이해
  • OpenCL C를 이용해 장치에서 실행될 커널을 작성하고 데이터 처리하는 방법
  • 데이터 타입, 한정자, 연산자 및 표현식 사용법
  • 수학 연산, 기하학적 계산, 관계 비교 등을 위한 내장 함수 활용법
  • 원자성 연산, 이미지 처리 기능, cl_khr_fp16 등의 확장 및 라이브러리 사용 방법

OpenCL 메모리 모델

  • 호스트와 장치 간 메모리 모델의 차이점 이해
  • 전역, 로컬, 상수, 프라이빗 메모리 공간의 활용법
  • 버퍼, 이미지, 파이프와 같은 메모리 객체 사용법
  • 읽기 전용, 쓰기 전용, 읽기-쓰기 등의 메모리 접근 모드 설정 방법
  • 메모리 일관성 유지 기법 및 동기화 수단 이해

OpenCL 실행 모델

  • 호스트와 장치 간 실행 모델의 차이점 파악
  • 워크 아이템, 워크 그룹 및 ND-레인지를 활용한 병렬 처리 설계법
  • get_global_id, get_local_id, get_group_id와 같은 함수 사용 방법
  • barrier, work_group_reduce, work_group_scan 등의 워크 그룹 내 함수 활용법
  • get_num_groups, get_global_size, get_local_size와 같은 장치 정보 관련 함수 사용법

디버깅

  • OpenCL 프로그램에서 흔히 발생하는 오류 및 버그 유형 이해
  • Visual Studio Code 디버거를 활용한 변수 검사, 중단점 설정 및 호출 스택 확인 방법
  • AMD 장치 환경에서 CodeXL을 이용한 OpenCL 프로그램 분석법
  • Intel 장치 환경에서 Intel VTune을 활용한 디버깅 및 최적화 방법
  • NVIDIA 장치 환경에서 NVIDIA Nsight를 이용한 프로그램 분석법

최적화

  • OpenCL 프로그램의 성능에 영향을 주는 요인 파악
  • 벡터 데이터 타입 및 벡터화 기법을 활용한 산술 연산 효율 향상 방법
  • 루프 언롤링 및 타일링 기술을 이용해 제어 오버헤드 감소 및 지역성 증진 방안
  • 로컬 메모리와 관련 함수를 활용한 메모리 접근 성능 최적화 방법
  • 프로파일링 도구를 이용해 실행 시간 및 자원 사용량을 측정하고 개선하는 방안

요약 및 향후 학습 방향

요건

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

수강 대상

  • OpenCL을 활용해 다양한 하드웨어에서 병렬 처리 프로그램을 개발하고자 하는 개발자
  • 여러 플랫폼 및 장치 환경에서 실행 가능한 이식성 높고 확장성이 뛰어난 코드를 작성하려는 개발자
  • 하드웨어 레벨의 병렬 프로그래밍 방식을 깊이 있게 탐구하고 코드 성능을 최적화하고자 하는 프로그래머
 28 시간

참가자 수


참가자별 가격

예정된 코스

관련 카테고리