|
CPU가 가능한 것을 GPU도 가능하게 해주는 C언어 기반의 CUDA! 
전통적으로 그래픽 카드는 모니터에 화면을 출력할 수 있게 해주는데 이어 3D 그래픽 렌더링 지원을 통해 평면적이었던 2D 게임을 3D 입체 환경에서 즐길 수 있게 만들어준 것이 불과 얼마지나지 않았다.
하지만, 3D 게임을 즐길 수 있게 된지 얼마 지나지 않은 최근 ,그래픽 카드 제조사들은 GPU를 게임의 용도만이 아닌 다양한 방면에 사용할 수 있는 방법들을 연구하고 결실을 맺어 GPU를 영상 트랜스코딩이나 게임의 물리엔진 가속, 포토샵 같은 프로그램의 플러그인 효과의 가속을 GPU를 통해 CPU보다 더 빠르게 처리하는 것도 가능해지고 있다. 이러한 이면에는 CPU보다 빠른 처리 능력을 가진 GPU의 장점을 활용하면서 가능해진 것이다.

[최신 GPU는 쿼드코어 CPU를 넘어서는 처리 성능 제공!]

[CUDA 지원 GPU를 이용할 경우 쿼드 코어 CPU보다 빠른 처리!]
그렇다면, 왜 GPU가 CPU가 하던 일들을 대신하려고 하는지 궁금해 할 것인데 GPU가 CPU보다 나은 부분으로 대표적으로 부동소수점 연산 부분의 차이를 들 수 있다. CPU를 앞서는 GPU의 부동소수졈 연산은 과학 시뮬레이션 분야나 영상 인코딩 등 다양한 분야에 활용될 수 있는 가능성을 충분히 가지고 있다.
또한, GPU의 강력한 부동소수점 연산을 통해 CPU로 한 시간에 할 수 있는 것을 성능 높은 GPU를 통해 시간을 더 단축할 수 있다면 그것은 분명 작업의 효율성을 높일 수 있다. 결국, GPU의 활용으로 작업 효율을 높이며, "시간 = 돈"으로 통하는 회사들은 곧 경쟁력을 높일 수 있게 되는 것이다.
GPU를 CPU가 사용되는 분야에 적용하기 위해 NVIDIA는 C언어 기반의 CUDA (Compute Unified Device Architecture)로 불리는 기술을 소개했고 게임의 물리엔진인 PhysX를 가속할 수도 있고 멀티 코어 CPU들의 활용이 높은 영상 인코딩 등과 같은 분야에도 적용이 가능하다.
AMD ATI의 경우 GPGPU (General-Purpose Computing On Graphics Processing Units)를 위해 자사의 스트림 프로세싱 (Stream Processing, Computing) 기술을 표준인 OpenCL을 지원할 수 있도록 스트림 SDK를 개선하고 있다. 하지만, NVIDIA처럼 가시적으로 나타나는 프로그램들의 지원은 더딘편이다.

[NVIDIA CUDA를 활용한 BadaBOOM 인코더]

[NVIDIA CUDA를 이용한 Folding @ Home]
NVIDIA는 CUDA를 이용한 대표적인 프로그램으로 최신 GPU인 GeForce GTX 280과 함께 소개된 GPU를 이용한 트랜스코딩이 가능한 BadaBOOM 인코더와 Folding @ Home 클라이언트를 들 수 있다. BadaBOOM은 CPU와 같은 조건에서 고성능 GPU를 사용할 경우 상당히 빠르게 영상을 변환할 수 있어 많은 사용자들에게 주목을 받았다.
단백질 변이 연구를 위한 단백질 접힘 연구를 하는 Folding @ Home 프로젝트에 참여하고 있다. Folding @ Home 프로젝트는 CPU를 비롯하여 GPGPU (General-Purpose Computing On Graphics Processing Units)를 이용한 GPU의 참여도 활발하다.

[어도비와 협력으로 어도비 CS4에서 NVIDIA GPU를 이용한 가속 지원]
NVIDIA는 또한 최근 이미지 편집과 영상 제작 등의 다양한 프로그램을 가지고 있는 어도비사와 협력을 통해 NVIDIA GPU를 이용한 다양한 플러그인과 그래픽 효과 적용, 이미지 편집, 프리미어의 영상 인코딩시 플러그인 (RapiHD)의 GPU 가속 등의 부분에 활용할 수 있도록 만들었다.
이들 외에도 페가시스사의 TMPEGEnc 4.0 Xpress, 지리정보시스템 (geographic Information System, GIS)을 비롯하여 게임에서는 앞서 살펴본 NVIDIA PhysX를 GPU로 가속하는 등 다양한 프로그램들과의 접목이 시도되고 있다.
이들은 GPU의 병렬 처리 능력을 적극 활용하고 있는 예로 여기에도 NVIDIA에서 만든 범용 컴퓨팅을 위한 CUDA가 중요한 역할을 담당하고 있다.

[NVIDIA CUDA ZONE, CUDA SDK 등 제공]
NVIDIA는 또한 자사의 CUDA ZONE을 통해 C언어를 다룰 수 있는 개발자들을 위한 SDK의 개선과 함께 이를 활용할 수 있는 SDK의 제공 및 CUDA를 사용할 수 있는 다양한 자료들을 제공하여 개발자들과 적극적으로 협력하고 있다.
GPU를 범용 컴퓨팅에 활용할 수 있도록 하는 일은 데스크탑 환경에서는 불과 얼마 지나지 않았지만, NVIDIA는 경쟁사보다 일찍 GPGPU의 가치를 보고 적극적인 모습을 보이고 있다. 이에 따라 NVIDIA GPU를 지원하는 다양한 PC용 프로그램들이 하나 둘 등장하고 있다.
현재는 CPU가 담당하던 일부분의 일들을 다루고 있지만, 점차 그 분야의 확대를 통해 CPU만으로는 부족한 일들을 GPU의 도움을 통해 빠르게 처리함으로써 기업은 시간을 절약하여 경쟁력을 높이고 있다. PC 사용환경에서도 영상 인코딩 등과 같은 작업에서 빠른 처리를 통해 이로 인한 시간 낭비를 줄여 보다 효과적인 시간을 활용할 수 있게 되고 있다.
|