문의를 보내주셔서 감사합니다! 팀원이 곧 연락드리겠습니다.
예약을 보내주셔서 감사합니다! 저희 팀 멤버 중 한 분이 곧 연락드리겠습니다.
코스 개요
소개
- 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 프로파일링 및 프로파일링 도구를 사용하여 실행 시간 및 리소스 사용량 측정 및 향상
요약 및 다음 단계
요건
- C/C++ 언어와 병렬 프로그래밍 개념에 대한 이해
- 컴퓨터 아키텍처와 메모리 계층에 대한 기본 지식
- 명령줄 도구와 코드 에디터 경험
대상자
- 다양한 플랫폼과 기기에서 병렬성을 활용하여 OpenCL을 사용하여 프로그래밍을 학습하려는 개발자
- 다양한 플랫폼과 기기에서 실행될 수 있는 포터블하고 확장 가능한 코드를 작성하려는 개발자
- 다양한 플랫폼과 기기에서 실행될 수 있는 포터블하고 확장 가능한 코드를 작성하려는 개발자
28 시간