문의를 보내주셔서 감사합니다! 팀원이 곧 연락드리겠습니다.
예약을 보내주셔서 감사합니다! 저희 팀 멤버 중 한 분이 곧 연락드리겠습니다.
코스 개요
소개
- 쿠다란 무엇인가요?
- CUDA 대 OpenCL 대 SYCL
- CUDA 기능 및 아키텍처 개요
- 개발 환경 설정
시작하기
- Visual Studio 코드를 사용하여 새 CUDA 프로젝트 만들기
- 프로젝트 구조 및 파일 탐색
- 프로그램 컴파일 및 실행
- printf 및 fprintf를 사용하여 출력 표시
쿠다 API
- 호스트 프로그램에서 CUDA API의 역할 이해
- CUDA API를 사용하여 장치 정보 및 기능 쿼리
- CUDA API를 사용하여 장치 메모리 할당 및 할당 해제
- CUDA API를 사용하여 호스트와 장치 간 데이터 복사
- CUDA API를 사용하여 커널 실행 및 스레드 동기화
- CUDA API를 사용하여 오류 및 예외 처리
쿠다C/C++
- 장치 프로그램에서 CUDA C/C++의 역할 이해
- CUDA C/C++을 사용하여 GPU에서 실행되고 데이터를 조작하는 커널 작성
- CUDA C/C++ 데이터 유형, 한정자, 연산자 및 표현식 사용
- 수학, 원자, 워프 등과 같은 CUDA C/C++ 내장 기능 사용
- threadIdx, blockIdx, blockDim 등과 같은 CUDA C/C++ 내장 변수 사용
- cuBLAS, cuFFT, cuRAND 등과 같은 CUDA C/C++ 라이브러리 사용
CUDA 메모리 모델
- 호스트 메모리 모델과 장치 메모리 모델의 차이점 이해
- 전역, 공유, 상수, 로컬 등 CUDA 메모리 공간 사용
- 포인터, 배열, 텍스처 및 표면과 같은 CUDA 메모리 개체 사용
- 읽기 전용, 쓰기 전용, 읽기-쓰기 등과 같은 CUDA 메모리 액세스 모드 사용
- CUDA 메모리 일관성 모델 및 동기화 메커니즘 사용
CUDA 실행 모델
- 호스트 실행 모델과 장치 실행 모델의 차이점 이해
- CUDA 스레드, 블록 및 그리드를 사용하여 병렬성 정의
- threadIdx, blockIdx, blockDim 등과 같은 CUDA 스레드 함수 사용
- __syncthreads, __threadfence_block 등과 같은 CUDA 블록 함수 사용
- GridDim, GridSync, 협력 그룹 등과 같은 CUDA 그리드 기능 사용
디버깅
- CUDA 프로그램의 일반적인 오류 및 버그 이해
- Visual Studio 코드 디버거를 사용하여 변수, 중단점, 호출 스택 등을 검사합니다.
- CUDA-GDB를 사용하여 Linux에서 CUDA 프로그램 디버그
- CUDA-MEMCHECK를 사용하여 메모리 오류 및 누수 감지
- NVIDIA Nsight를 사용하여 Windows에서 CUDA 프로그램 디버그 및 분석
최적화
- CUDA 프로그램의 성능에 영향을 미치는 요소 이해
- CUDA 병합 기술을 사용하여 메모리 처리량 향상
- CUDA 캐싱 및 프리페칭 기술을 사용하여 메모리 대기 시간 줄이기
- CUDA 공유 메모리 및 로컬 메모리 기술을 사용하여 메모리 액세스 및 대역폭 최적화
- CUDA 프로파일링 및 프로파일링 도구를 사용하여 실행 시간 및 리소스 활용도 측정 및 개선
요약 및 다음 단계
요건
- C/C++ 언어 및 병렬 프로그래밍 개념에 대한 이해
- 컴퓨터 아키텍처 및 메모리 계층에 대한 기본 지식
- 명령줄 도구 및 코드 편집기 사용 경험
청중
- CUDA를 사용하여 NVIDIA GPU를 프로그래밍하고 병렬성을 활용하는 방법을 배우고자 하는 개발자
- 다양한 CUDA 장치에서 실행될 수 있는 확장 가능한 고성능 코드를 작성하려는 개발자
- GPU 프로그래밍의 하위 수준 측면을 탐색하고 코드 성능을 최적화하려는 프로그래머
28 시간