1. Introduction
CUDA®는 엔비디아가 만든 병렬 컴퓨팅 플랫폼 및 프로그래밍 모델이다. 이는 GPU의 능력을 이용함으로써 컴퓨팅 성능을 드라마틱하게 증가시킬 수 있다.
CUDA는 몇 가지 설계 목표를 염두하고 개발되었다:
- C와 같은 표준 프로그래밍 언어에 대한 약간의 확장 세트를 제공하는데, 이것이 병렬 알고리즘(parallel algorithm)을 직접 구현할 수 있게 해준다. 프로그래머는 CUDA C/C++를 활용함으로써 병렬 알고리즘의 구현을 보다는 알고리즘의 병렬화 업무(task of paralleization)에 집중할 수 있다.
- 어플리케이션이 CPU와 GPU 둘 모두를 이용하는 경우에 이종 계산을 제공한다. 어플리케이션의 순차적인 부분은 CPU상에서 동작하고, 병렬적인 부분은 GPU에 투하된다. 따라서 CUDA를 기존 어플리케이션에 점진적으로 적용할 수 있다. CPU와 GPU는 각자 자신의 메모리 공간을 가진 별도의 디바이스로서 취급된다. 이러한 배치는 메모리 자원들의 충돌 없이 CPU와 GPU 상에서 동시 계산을 가능하게 한다.
CUDA-가능(CUDA-capable) GPU는 수천 개의 컴퓨팅 쓰레드를 총괄하여 실행시킬 수 있는 코어를 수백 개 갖고 있다. 이 코어들은 레지스터 파일, 공유 메모리를 포함하는 공유 자원들을 갖는다. 온칩 공유 메모리는 이 코어들에서 동작하고 있는 병렬 태스크들이 시스템 메모리 버스를 통해 데이터를 주고 받지 않아도 서로 데이터를 공유할 수 있게 해준다.
이 가이드는 CUDA 개발 툴을 인스톨하고 정상적인 동작을 체크하는 법을 알려줄 것이다.
1.1. System Requirements
여러분의 시스템에서 CUDA를 사용하기 위해서는 다음의 것들을 인스톨할 필요가 있다:
- CUDA-가능 GPU
- 지원되는 버전의 리눅스(gcc 컴파일러와 툴체인 포함)
- NVIDIA CUDA Toolkit
CUDA 개발 환경은 호스트 개발 환경(호스트 컴파일러와 C 런타임 라이브러리들을 포함하는)과의 강한 통합에 의존한다. 그래서 이 CUDA Toolkit 릴리즈를 위해 품질이 검증된 배포 버전에 대해서만 CUDA 개발 환경이 지원된다.
1.2. About This Document
이 문서는 리눅스 환경과 커맨드라인에서 C 프로그램을 컴파일하는 것에 익숙한 독자들에 맞춰 작성되었다. CUDA와 병렬계산(parallel computation)에 대한 사전 경험을 필요로 하지는 않는다. 주의: 이 가이드는 X 윈도우가 설치된 시스템에서의 인스톨만을 다룬다.
NOTE: 이 문서의 많은 명령은 수퍼유저 권한(superuser privileges)을 필요로 한다. 대부분의 리눅스 배포판에서는 이 설치를 위해 root로서 로그인 할 필요가 있다. sudo 패키지가 가능한 시스템에서는 모든 명령에 sudo를 사용하라.