Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
Course Outline
소개
- OpenCL이란 무엇인가?
- OpenCL vs CUDA vs SYCL
- OpenCL 기능 및 아키텍처 개요
- 개발 환경 설정
시작하기
- Visual Studio Code를 사용하여 새로운 OpenCL 프로젝트 생성
- 프로젝트 구조 및 파일 탐색
- 프로그램 컴파일 및 실행
- printf 및 fprintf를 사용하여 출력 표시
OpenCL API
- 호스트 프로그램에서 OpenCL API의 역할 이해
- OpenCL API를 사용하여 장치 정보 및 기능 쿼리
- OpenCL API를 사용하여 컨텍스트, 명령 큐, 버퍼, 커널 및 이벤트 생성
- 읽기, 쓰기, 복사, 매핑, 언매핑, 실행 및 대기와 같은 명령어를 큐에 넣는 방법
- OpenCL API를 사용하여 오류 및 예외 처리
OpenCL C
- 디바이스 프로그램에서 OpenCL C의 역할 이해
- 데이터 조작을 위해 디바이스에서 실행되는 커널 작성
- OpenCL C 데이터 유형, 제한자, 연산자 및 표현식 사용
- 수학, 기하학적, 관계형 등 OpenCL C 내장 함수 사용
- 원자, 이미지, cl_khr_fp16 등 OpenCL C 확장 및 라이브러리 사용
OpenCL 메모리 모델
- 호스트 및 디바이스 메모리 모델의 차이점 이해
- 글로벌, 로컬, 상수 및 개인 공간의 OpenCL 메모리 사용
- 버퍼, 이미지 및 파이프의 OpenCL 메모리 객체 사용
- 읽기 전용, 쓰기 전용, 읽기/쓰기 등의 OpenCL 메모리 접근 모드 사용
- OpenCL 메모리 일관성 모델 및 동기화 메커니즘 사용
OpenCL 실행 모델
- 호스트 및 디바이스 실행 모델의 차이점 이해
- 병렬성을 정의하기 위해 OpenCL 작업 항목, 작업 그룹 및 ND-범위 사용
- get_global_id, get_local_id, get_group_id 등의 OpenCL 작업 항목 함수 사용
- barrier, work_group_reduce, work_group_scan 등의 OpenCL 작업 그룹 함수 사용
- get_num_groups, get_global_size, get_local_size 등의 OpenCL 디바이스 함수 사용
디버깅
- OpenCL 프로그램에서 일반적인 오류 및 버그 이해
- Visual Studio Code 디버거를 사용하여 변수, 브레이크포인트, 호출 스택 등 검사
- CodeXL을 사용하여 AMD 장치에서 OpenCL 프로그램을 디버그 및 분석
- Intel VTune을 사용하여 Intel 장치에서 OpenCL 프로그램을 디버그 및 분석
- NVIDIA Nsight을 사용하여 NVIDIA 장치에서 OpenCL 프로그램을 디버그 및 분석
최적화
- OpenCL 프로그램 성능에 영향을 미치는 요인 이해
- OpenCL 벡터 데이터 유형 및 벡터화 기법을 사용하여 산술 처리량 향상
- OpenCL 루프 언롤링 및 루프 타일링 기법을 사용하여 제어 오버헤드 줄이고 지역성 증가
- OpenCL 로컬 메모리 및 로컬 메모리 함수를 사용하여 메모리 접근 및 대역폭 최적화
- OpenCL 프로파일링 및 프로파일링 도구를 사용하여 실행 시간 및 리소스 사용량 측정 및 향상
요약 및 다음 단계
Requirements
- C/C++ 언어와 병렬 프로그래밍 개념에 대한 이해
- 컴퓨터 아키텍처와 메모리 계층에 대한 기본 지식
- 명령줄 도구와 코드 에디터 경험
대상자
- 다양한 플랫폼과 기기에서 병렬성을 활용하여 OpenCL을 사용하여 프로그래밍을 학습하려는 개발자
- 다양한 플랫폼과 기기에서 실행될 수 있는 포터블하고 확장 가능한 코드를 작성하려는 개발자
- 다양한 플랫폼과 기기에서 실행될 수 있는 포터블하고 확장 가능한 코드를 작성하려는 개발자
28 Hours