연락처 정보
 기간 28 시간

코스 개요

서론

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

시작하기

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

OpenCL API

  • 호스트 프로그램에서 OpenCL API의 역할 이해
  • OpenCL API를 사용하여 장치 정보 및 기능 조회
  • OpenCL API를 사용하여 컨텍스트, 커맨드 큐, 버퍼, 커널, 이벤트 생성
  • OpenCL API를 사용하여 읽기, 쓰기, 복사, 매핑, 언매핑, 실행, 대기 및 기타 커맨드 엔큐(Enqueue)
  • OpenCL API를 사용하여 오류 및 예외 처리

OpenCL C

  • 장치 프로그램에서 OpenCL C의 역할 이해
  • OpenCL C를 사용하여 장치를 실행하고 데이터를 조작하는 커널 작성
  • OpenCL C 데이터 유형, 수식어, 연산자, 표현식 사용
  • 수학, 기하, 관계 등 OpenCL C 내장 함수 사용
  • atomic, image, cl_khr_fp16 등 OpenCL C 확장 및 라이브러리 사용

OpenCL 메모리 모델

  • 호스트 및 장치 메모리 모델 간의 차이 이해
  • global, local, constant, private 등 OpenCL 메모리 공간 사용
  • 버퍼, 이미지, 파이프 등 OpenCL 메모리 객체 사용
  • 읽기 전용, 쓰기 전용, 읽기-쓰기 등 OpenCL 메모리 접근 모드 사용
  • OpenCL 메모리 일관성 모델 및 동기화 메커니즘 사용

OpenCL 실행 모델

  • 호스트 및 장치 실행 모델 간의 차이 이해
  • OpenCL work-item, work-group, ND-range를 사용하여 병렬성 정의
  • get_global_id, get_local_id, get_group_id 등 OpenCL work-item 함수 사용
  • barrier, work_group_reduce, work_group_scan 등 OpenCL work-group 함수 사용
  • get_num_groups, get_global_size, get_local_size 등 OpenCL device 함수 사용

디버깅

  • OpenCL 프로그램의 일반적인 오류 및 버그 이해
  • Visual Studio Code 디버거를 사용하여 변수, 중단점, 호출 스택 검사
  • AMD 장치에서 OpenCL 프로그램을 디버깅 및 분석하기 위해 CodeXL 사용
  • Intel 장치에서 OpenCL 프로그램을 디버깅 및 분석하기 위해 Intel VTune 사용
  • NVIDIA 장치에서 OpenCL 프로그램을 디버깅 및 분석하기 위해 NVIDIA Nsight 사용

최적화

  • OpenCL 프로그램 성능에 영향을 미치는 요인 이해
  • 산술 처리량 향상을 위해 OpenCL 벡터 데이터 유형 및 벡터화 기법 사용
  • 제어 오버헤드 감소 및 국소성(Locality) 증대를 위해 OpenCL 루프 언롤링 및 루프 타일링 기법 사용
  • 메모리 접근 및 대역폭 최적화를 위해 OpenCL 로컬 메모리 및 로컬 메모리 함수 사용
  • 실행 시간 및 자원 활용률 측정 및 개선을 위해 OpenCL 프로파일링 및 프로파일링 도구 사용

요건

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

대상 고객

  • OpenCL을 활용해 이종 장치를 프로그래밍하고 병렬성을 활용하는 방법을 배우고자 하는 개발자
  • 다양한 플랫폼 및 장치에서 실행될 수 있는 포터블하고 확장 가능한 코드를 작성하고자 하는 개발자
  • 이종 프로그래밍의 저수준 측면을 탐구하며 코드 성능을 최적화하고자 하는 프로그래머

참가자 수


참가자별 가격

예정된 코스

관련 카테고리