CUDA
GPGPU 기술 / From Wikipedia, the free encyclopedia
CUDA("Compute Unified Device Architecture", 쿠다)는 그래픽 처리 장치(GPU)에서 수행하는 (병렬 처리) 알고리즘을 C 프로그래밍 언어를 비롯한 산업 표준 언어를 사용하여 작성할 수 있도록 하는 GPGPU 기술이다. CUDA는 엔비디아가 개발해오고 있으며 이 아키텍처를 사용하려면 엔비디아 GPU와 특별한 스트림 처리 드라이버가 필요하다. CUDA는 G8X GPU로 구성된 지포스 8 시리즈급 이상에서 동작한다. CUDA 플랫폼은 컴퓨터 커널의 실행을 위해 GPU의 가상 명령 집합과 병렬 연산 요소들을 직접 접근할 수 있는 소프트웨어 계층이다.[1]
개발자 | 엔비디아 |
---|---|
발표일 | 2007년 6월 23일(16년 전)(2007-06-23) |
안정화 버전 | 12.1.0
/ 2023년 3월 1일(13개월 전)(2023-03-01) |
운영 체제 | 윈도우 XP 이상 macOS 리눅스 |
플랫폼 | 아래의 지원 GPU 참고 |
종류 | GPGPU |
라이선스 | 프리웨어 |
웹사이트 | developer |
개발자는 패스스케일 오픈64 C 컴파일러로 컴파일 된 '쿠다를 위한 C' (C언어를 엔비디아가 확장한 것)를 사용하여 GPU 상에서 실행시킬 알고리듬을 작성할 수 있다. 쿠다 구조는 일련의 계산 인터페이스를 지원하며 이에는 OpenCL, DirectX Compute가 포함된다. C 언어가 아닌 다른 프로그래밍언어에서의 개발을 위한 래퍼(Wrapper)도 있는데, 현재 파이썬, 펄, 포트란, 자바와 매트랩 등을 위한 것들이 있다. 이러한 접근성은 병렬 프로그래밍 전문가들이 GPU 리소스를 쉽게 이용할 수 있게 해주며, 이는 그래픽스 프로그래밍의 고급 기술을 요구하였던 Direct3D와 OpenGL과 같은 이전 API 솔루션들과 대비된다. 또, CUDA는 OpenACC와 OpenCL과 같은 프로그래밍 프레임워크를 지원한다.[1]
최신 드라이버는 모두 필요한 쿠다 콤포넌트를 담고 있다. 쿠다는 모든 엔비디아 GPU (G8X 시리즈 이후)를 지원하며 이 대상에는 지포스, 쿼드로, 테슬라 제품군이 포함된다. 엔비디아는 지포스 8 시리즈를 위해 개발된 프로그램들이 수정 없이 모든 미래의 엔비디아 비디오 카드에서 실행될 것이라고 선언하였다.
쿠다를 통해 개발자들은 쿠다 GPU 안 병렬 계산 요소 고유의 명령어 집합과 메모리에 접근할 수 있다. 쿠다를 사용하여 최신 엔비디아 GPU를 효과적으로 개방적으로 사용할 수 있다. 그러나 CPU와는 달리 GPU는 병렬 다수 코어 구조를 가지고 있고, 각 코어는 수천 스레드를 동시에 실행시킬 수 있다. 응용 프로그램이 수행하는 작업(계산)이 이러한 병렬처리연산에 적합할 경우, GPU를 이용함으로써 커다란 성능 향상을 기대할 수 있다.
컴퓨터 게임 업계에서는 그래픽 랜더링에 덧붙여, 그래픽 카드의 게임 물리 계산 (파편, 연기, 불, 유체 등 물리 효과)에 사용되며, 예로는 피직스와 불렛이 있다. 쿠다는 그래픽이 아닌 응용 프로그램, 즉, 계산 생물학, 암호학, 그리고 다른 분야에서 10배 또는 그 이상의 속도 혜택을 가져왔다. 이 한 예는 BOINC 분산 계산 클라이언트이다.
쿠다는 저수준 API와 고수준 API 모두를 제공한다. 최초의 CUDA SDK는 2007년 2월 15일에 공개되었으며 마이크로소프트 윈도우와 리눅스를 지원했다. OS X 지원은 2.0 버전에 추가되었다.