|
DirectCompute, CUDA, ATI Stream, OpenCL
데스크탑 시장의 GPU는 기존에 해오던 3D 게이밍 등의 분야를 넘어 이제는 GPU를 CPU가 하던 일 일부를 도와줄 수 있는 GPGPU 기술도 본격적으로 지원하기 시작하여 3D 성능 뿐만 아니라 GPGPU 기술의 경쟁도 시작되고 있다.
GPGPU는 GPU 범용 병렬 컴퓨팅 기술로 부각되고 있으며, 윈도우 7에서는 DirectCompute, NVIDIA는 CUDA, AMD ATI는 ATI Stream, Apple를 주축으로 하는 OpenCL의 기술들이 있다.
여기에서는 각 GPGPU 기술이 가지 특징들을 간단히 살펴보고 윈도우 7 RTM을 통해 DirectCompute 드래그 앤 드롭 트랜스코딩 테스트로 이어가도록 하겠다.
그래픽카드 제조사들이 지원하는 GPGPU 기술
현재 데스크탑 시장에 소개된 GPGPU 기술 중 그래픽카드 제조사들이 소개한 기술은 NVIDIA CUDA와 AMD ATI Stream이 있으며, 앞으로 등장할 것으로 알려진 인텔의 x86 CPU 기반 다수 코어를 사용하여 만들어진 라라비 (Larrabee)도 CPU를 기반으로 하는 만큼 GPGPU 기술에서 NVIDIA와 AMD ATI 못지 않은 성능을 제공할 것으로 알려지고 있다.
데스크탑 시장에는 NVIDIA가 C언어 기반의 CUDA를 본격적으로 소개하면서 GPGPU 기술이 일반 사용자들에게도 알려지고 있으며, NVIDIA는 다양한 소프트웨어 제작사들과 긴밀한 협력을 통해 경쟁사들보다 자사의 CUDA를 지원하는 다양한 소프트웨어를 추가하여 데스크탑 시장에서 CUDA의 입지를 강화하고 있다. 최근에는 자사의 물리엔진인 PhysX를 CUDA 기반으로 동작하도록 하여 게임 상에서 일어나는 물리효과를 CPU로 진행하는 것보다 더 많은 효과와 보다 현실에 가까운 사실적인 움직임을 재현하고 있다.
반면, AMD는 ATI Stream을 통해 경쟁사인 NVIDIA CUDA보다 한발 뒤쳐진 모습을 보여주고 있다. 이러한 움직임은 AMD는 NVIDIA가 GPU만 갖고 있는 상황과 달리 CPU와 GPU를 모두 갖고 있기 때문에 GPU의 GPGPU 기술을 이용한 부분을 크게 부각할 경우 자사의 CPU에도 영향을 줄 수 있기 때문에 상대적으로 소극적인 모습을 보여준다. 이는 라라비를 개발 중인 인텔도 크게 다르지 않은 모습이다.
최근 AMD는 NVIDIA PhysX처럼 인텔이 인수한 하복 (Havok) 물리엔진을 ATI Stream을 통해 GPU로 시연하는 모습이나 NVIDIA CUDA 지원 소프트웨어 대다수에서 자사의 GPGPU 기술인 ATI Stream을 지원할 수 있도록 소프트웨어 제작사들과도 협력하는 모습을 보여 GPGPU 기술에도 과거보다 힘을 쏟고 있다.
[NVIDIA C기반 CUDA, 공개표준 OpenCL과 DirectCompute 지원]
[AMD ATI Stream, 공개표준 OpenCL과 DirectCompute 지원]
NVIDIA와 AMD ATI가 지원하는 GPGPU 기술은 C언어 기반의 CUDA와 Brook+ 언어 기반의 ATI Stream이다. 하지만, 이들 그래픽카드 제조사들은 자사의 GPGPU 기술을 발전시키면서 다른 GPGPU 기술들도 함께 지원하는 방향으로 나가고 있다. 이는 현재의 GPGPU 기술들이 데스크탑 환경에서 표준으로 채택된 것이 없는 것이 가장 주요한 이유이다. 그렇기 때문에 양사는 자사의 GPGPU 기술 뿐만 아니라 공개 표준인 OpenCL과 윈도우 7에 포함된 DirectX 11이 지원하는 GPGPU 기술인 DirectCompute를 지원한다.
Apple을 주축으로 하는 공개표준 OpenCL
[Apple을 주축으로 만들어진 OpenCL]
애플 (Apple)을 주축으로 하는 여러 업체들이 연합하여 만든 공개표준 OpenCL은 애플, 삼성, 인텔, NVIDIA, AMD 등 다양한 업체들이 참여하고 있다는 점과 크로노스 그룹에 일원이되면 무료로 GPGPU 기술인 OpenCL을 사용할 수 있는 것이 큰 장점들이다.
또한, 다른 GPGPU 기술들처럼 CPU와 GPU의 이종간의 컴퓨팅이 가능한 기술이며, 이들 외에도 다양한 프로세서들과 휴대용 장치들에서도 활용될 수 있다. 그렇기 때문에 그래픽카드 제조사들이 자사의 GPU에 최적화된 GPGPU 기술에 중점을 두고 있는 상황보다 더 개방적이며 범용적인 활용이 가능하다.
하지만, OpenCL은 다른 GPGPU 기술보다 본격적인 도입은 활발하게 이루어지지 못하고 있다. 이는 많은 사용자층을 가진 윈도우가 윈도우 7에서 DirectCompute를 지원하거나 그래픽카드 제조사들은 CUDA나 ATI Stream을 윈도우 운영체제에서 적극 지원하고 있기 때문이다. OpenCL의 경우 애플의 새로운 운영체제인 Mac OS X 10.6인 스노우 레퍼드에서 지원되기 시작했기 때문에 아직은 가야할 길이 멀다.
윈도우 7의 GPGPU를 위한 DirectCompute
[윈도우 7은 CPU와 GPU의 협력 관계를 더욱 강화]
윈도우 7은 이전의 운영체제들보다 CPU와 GPU의 이종 프로세서 사이의 협력 관계를 더욱 강화한 것이 특징이다. 현재 일반 사용자들이 많이 사용하는 듀얼/ 트리플/ 쿼드코어 CPU와 병렬 프로세싱 코어를 내장한 GPU의 조합을 통해 비디오 인코딩 등에서 더욱 개선된 성능을 얻을 수 있게된다.
[일반 어플리케이션은 CPU로 처리 후 GPU로 디스플레이]
[비디오 인코딩 등에 CPU와 DirectCompute 지원 GPU로 함께 처리]
윈도우 7은 CPU와 GPU의 협력을 강화했다고 했는데 이는 DirectX 11 API 중의 하나인 DirectCompute를 통해 뒷받침하고 있다. DirectCompute API는 NVIDIA CUDA나 AMD ATI Stream처럼 GPGPU 기술의 일종이다.
일반적으로 사용되는 어플리케이션들은 CPU를 이용한 처리가 이루어지며, GPU는 화면에 나타내는 디스플레이 기능이 주가되었다. 그러나, 윈도우 7 환경으로의 변화가 이루어지면서 비디오 인코딩 등의 작업에 CPU와 GPU 프로세싱 능력을 서로 조합하여 CPU 단독처리보다 더 높은 처리 성능을 얻을 수 있게 된다. 이는 윈도우 7에서 GPGPU 기술인 DirectCompute를 본격적으로 지원하기 시작했기 때문이다. 물론, 윈도우 비스타에서도 이를 사용가능하나 윈도우 7에서 보다 더 최적화된 형태로 만들어진다.
[DirectCompute, 윈도우 7의 GPGPU 기술]
DirectCompute는 윈도우 7에서 지원되기 시작한 DirectX 11 API에 포함된 API 중의 하나로 볼 수 있으며, 기존 DirectX 10/ 10.1 지원 GPU들과 앞으로 등장할 것으로 알려진 DirectX 11 지원 GPU들 모두가 지원할 수 있는 GPGPU 기술이다.
DirectCompute 기술은 CPU와 GPU의 협력을 통해 CPU 단독처리보다 높은 성능을 제공할 수 있게 된다. CPU는 일반적으로 시리얼 방식처리, GPU는 병렬 방식처리에서 유리한데 비디오 인코딩 등은 GPU의 높은 부동소수점연산 처리 능력을 통해 CPU보다 더 유리한 모습을 보여줄 수 있다.
또한, DirectCompute는 이미 판매된 200백만 개 이상의 NVIDIA나 AMD ATI의 DirectX 10/ 10.1 GPU들을 활용할 수 있고 앞으로 등장할 DirectX 11 지원 GPU들에서의 지원, 그리고 마이크로소프트의 적극적인 지원과 DirectX API에 익숙한 프로그래머들도 다른 GPGPU 기술들보다 쉽게 접근할 수 있는 장점을 가진다.
DirectCompute 지원 GPU들 중 지원 현황에서는 NVIDIA가 더 유리한 입장이다. NVIDIA는 GeForce 8 시리즈 이상이면 모두 GPGPU 기술인 CUDA를 지원하면서 DirectCompute도 지원된다. 또한, NVIDIA는 190.62 최신 드라이버를 통해 DirectCompute를 본격적으로 지원하기 시작했다. 반면, AMD ATI는 Radeon HD 4600/ 4700/ 4800 시리즈 위주로 현재 ATI Stream을 지원하고 DirectCompute를 지원하므로 NVIDIA보다 지원 GPU의 수가 더 적은 상황이다.
AMD와 NVIDIA는 각각의 GPGPU 기술을 기반으로 DirectCompute를 실행할 수 있게 된다.
DirectCompute의 활용
CPU가 분기 예측과 랜덤 메모리 액세스 등의 범용 컴퓨팅 즉, 시리얼 명령 처리에 강점을 가져 다양한 분야에 활용이 가능하지만, GPU는 부동소수점 연산을 이용한 병렬 처리 능력에서 CPU보다 월등하나 CPU를 완전하게 대체하지는 못한다. 그러한 이유로 GPU를 이용한 GPGPU 기술은 CPU와 GPU를 서로 협력하여 부족한 부분을 보완할 수 있도록 등장하였다고 볼 수 있다.
DirectCompute의 활용 분야는 NVIDIA CUDA나 AMD ATI Stream GPGPU 기술이 지원하는 것이면 대부분 적용할 수 있다.
따라서, DirectCompute는 GPGPU 기술을 지원하는 GPU를 이용하는 비디오 트랜스코딩이나 인코딩, 게임의 물리엔진, 이미지 프로세싱, 과학 컴퓨팅, 3D 그래픽 (레이트레이싱 등) 등의 부동소수점 연산이 강점을 보이는 병렬 처리 방식에서 유리하다.
윈도우 7, DirectCompute 기술 기반 드래그 앤 드롭 트랜스코딩 지원
[윈도우 7, MFT (Media Foundation Transcode) Interface]
윈도우 7은 DirectCompute를 적극적으로 도입하는 만큼 자체에서도 이를 이용한 드래그 앤 드롭 트랜스코딩을 지원한다. 최근 휴대용 기기의 사용이 증가하면서 고용량 파일을 휴대용 장치에 맞게 트랜스코딩 등의 작업이 필요한데 윈도우 7 자체의 드래그 앤 드롭 트랜스코딩을 이용하면 더 쉽게 휴대용 기기를 이용할 수 있다.
윈도우 7에서 지원하는 DirectCompute는 HDD에 위치한 원본 파일을 휴대용 미디어 플레이어에 드래그 앤 드롭 하는 것으로 손쉽게 영상 파일변환 즉, 재인코딩 (트랜스코딩)을 지원한다. 즉, 윈도우 7에서 지원되는 MFT (Media Foundation Transcode) 인터페이스를 통해 GPU 가속 트랜스코딩을 지원한다.
윈도우 7의 드래그 앤 드롭 트랜스코딩은 현재 NVIDIA가 CUDA를 기반으로 DirectCompute를 지원하여 지원 영상 포맷 사용시 가속이 되며, AMD ATI는 현재의 카탈리스트 9.8은 지원하지 못하고 카탈리스트 9.10 버전을 통해 ATI Stream 기반으로 DirectCompute를 지원하게 된다.
윈도우 7에 포함된 드래그 앤 드롭 트랜스코딩은 MTP (Media Transfer Protocol)를 지원하고 있는 동영상 지원 휴대용 미디어플레이어들에서 가능하다. 대표적으로 소니 워크맨이나 크리에이티브 Zen W 등이 이를 지원한다.
참고로 MTP는 마이크로소프트가 휴대용 장치들을 PC 사이에더 동기화시키기 위해 개발한 새로운 프로토콜 (규약)이며, MSC (Mass Storage Class, MSC)를 지원하는 PTP (Picture Transfer Protocol) 기반이지만, PTP에서 제공하지 못하는 핫플러그 등의 다양한 기능들을 추가로 지원한다. MTP를 제대로 사용하기 위해서는 윈도우 미디어플레이어 10 이상의 버전이 필요하며, 드라이버 인스톨이 필요치 않고 USB를 연결하면 대용량 저장 장치로 인식된다. 또, 자동 동기화 (Auto Sync.), DRM (윈도우 미디어플레이어 10의 Digital Rights Management) 등의 다양한 기능을 제공한다.
|