AI Computing 가속화를 위한 CUDA 프로그래밍을 직접 배워보는 핸즈온 워크샵이 열립니다.
우리가 언어를 매개로 의사소통을 하듯이 기계와 커뮤니케이션을 하기 위해서는 프로그래밍 언어가 필요합니다. 개발자들이 프로그래밍 언어로 컴퓨터에 지시를 내리면, 지시문을 명령어로 번역, 컴퓨터가 효과적으로 수행할 수 있도록 하는 것을 바로 컴파일러(compiler)라고 하는데요. GPU 컴퓨팅에도 일종의 컴파일러 역할을 수행하는 도구가 있습니다. 바로 CUDA(Computed Unified Device Architecture)입니다.
CUDA 병렬 프로그램 개발 과정을 배워보고 싶다면?
NVIDIA AI Conference 2018에서 열리는 CUDA 핸즈온 워크샵에 참여하세요!
10월 19일까지 얼리버드 특가가 진행됩니다! [자세히 보기]
Fundamentals of Accelerated Computing With CUDA C/C++
< 교육내용 >
CUDA는 GPU에서의 병렬 컴퓨팅을 통해 CPU 전용 프로그램의 가속화를 가능하게 합니다.
CUDA C/C++ 프로그램 병렬 가속화 경험:
CPU 전용 프로그램을 GPU 기반 병렬 프로그램으로 가속화
가속화된 프로그램을 최적화하기 위해 CUDA 메모리 관리 기법 활용
가속화된 프로그램의 동시 실행 가능성을 확인하고 CUDA 스트림으로 활용
작업 속도를 확인하고 최적화하기 위해 커맨드 라인 프로파일링과 비주얼 프로파일링 활용
이 과정을 수료하면 CUDA C/C++을 이용해 CPU 전용 프로그램을 병렬 가속화 할 수 있습니다. 또한 CUDA 병렬 프로그램 개발 과정에서 최적화를 위한 반복적인 최적화 작업 방식을 이해할 수 있게 됩니다.
GPU의 병렬 프로그래밍 언어, CUDA
일반적인 GPU는 계층적으로 구성된 수백 개의 연산 코어를 가지고 있는데요. CUDA 아키텍처 덕분에 GPU 가속화 애플리케이션에서 애플리케이션의 연산 집약적인 부분은 수천 개의 GPU 코어에서 동시에 실행하고, 워크로드의 직렬 처리 부분은 단일 스레드 성능에 최적화된 CPU에서 처리할 수 있게 되었습니다.
즉, 엔비디아 GPU가 인공지능(AI) 혁명을 견인한 원동력이자 고성능 컴퓨팅(HPC) 분야의 필수적인 솔루션으로 빠르게 확산된 요인은 CUDA에 있다고도 할 수 있답니다.
모든 GPU 관련 소프트웨어에 있는 CUDA
사실 CUDA는 모든 엔비디아 GPU 관련 소프트웨어에서 가장 기본적인 언어로 쓰이고 있습니다. 데스크탑 개발, 데이터 센터 솔루션, 임베디드 애플리케이션, GPU 가속화 클라우드 등 전체 제품군에서 공통 플랫폼으로 사용되므로 전 GPU 구성에서 애플리케이션을 배포하고 확장 할 수 있지요.
출시 초기부터 CUDA 에코 시스템은 소프트웨어 개발 툴, 서비스 및 파트너 기반 솔루션을 포함해서 급격한 속도로 성장했습니다. 엔비디아 CUDA 툴킷(CUDA Toolkit)은 GPU 가속화 애플리케이션 개발에 필요한 모든 것을 제공하지요. CUDA 툴킷에는 GPU 가속화 라이브러리, 디버깅 및 최적화 툴, 컴파일러, 그리고 애플리케이션을 배포하기 위한 CUDA 런타임이 포함됩니다. 또한 코드 샘플, 프로그래밍 가이드 API 참조사항 및 기타 설명서도 함께 제공됩니다.
개발자들은 CUDA 툴킷을 사용해서 연산 집약적인 코드 부분을 GPU에서 실행되도록 업데이트하여 C 또는 C ++ 애플리케이션을 가속화할 수 있습니다. 개발자들은 애플리케이션을 가속화하기 위해 C, C ++, Fortran 및 Python을 포함한 널리 사용되는 언어로 사용자 정의 애플리케이션을 개발할 뿐만 아니라 드롭 인 라이브러리에서 함수를 호출할 수도 있습니다.