|
윈도우 7, GPGPU는 DirecX Compute로 지원
최근 GPU를 CPU가 하던 일 일부를 도와줄 수 있는 기술인 GPGPU가 부각되고 있는데 윈도우 7에서도 GPGPU를 위한 기술을 DirectX Compute라는 이름으로 지원하고 있다.
여기에서는 GPGPU 지원을 위한 DirectX Compute를 살펴보기에 앞서 DirectX 11이 기존 DirectX 10/ 10.1과 달리진 주요 부분을 잠깐 언급한 후 본격적으로 DirectX Compute를 살펴보도록 하겠다.
DirectX 10과 달라진 DirectX 11
DirectX 11은 기본적으로 Direct 3D 10과 Direct 3D 10.1에서 지원되던 4x MSAA 샘플 패턴과 마스크, 큐브 맵 배열 지원 등을 비롯하여 Direct 3D 9버전의 기본적인 기능들이 모두 포함된다. DirectX 11은 DirectX 10과 비교하여 아래의 3가지의 주요한 특징들이 추가되면서 게임 등에서의 성능과 추가 효과 및 효율 향상을 가져오고 있다.
1. 테셀레이션 (Tessellation)
테셀레이션은 주로 3D 모델 생성에 관여하는데 빠른 렌더링 및 더 적은 메모리 공간의 사용 등을 통해 기존 쉐이더 유닛들을 사용하는 것보다 더욱 사실적인 인물이나 물체 표현이 가능해져 게임 내의 사실성을 높여줄 수 있도록 해주는 기술이다.
AMD ATI의 경우 경쟁사보다 빠르게 적용한 DirectX 10.1과 더불어 Radeon HD 2000 시리즈에 테셀레이션 유닛을 추가 (과거 ATI는 Truform 이라는 기술 사용)했고 Xbox 360에 장착된 GPU 역시 이를 탑재하고 있다.
[Direct 3D 11, DX 3D 10에 테셀레이션을 위한 3가지 스테이지 추가]
DirectX 11에서는 테셀레이션을 위한 테셀레이터를 고정 유닛으로 반드시 포함하며, HuL Shader/ Domain Shader 유닛의 2가지도 추가로 포함된다.
2. Compute Shader 5.0 지원
Compute Shader는 그래픽 카드의 GPU가 주로 3D 모델링 및 렌더링 등에 활용된 것에 추가로 GPU를 범용목적 컴퓨팅 즉, GPGPU 기술에 활용할 수 있도록 해주는 것이다. DirectX 11에서는 Compute Shader 5.0을 지원한다. 기존 DirectX 10/ 10.1 지원 GPU들은 Compute Shader 4.0/ 4.1을 통해 GPGPU 기술을 지원할 수 있게 된다.
Compute Shader 5.0은 DirectX 11 지원 하드웨어에 더욱 최적화되어 더 나은 성능을 제공하게 되며, 각 스레드 그룹에 공유되는 메모리도 16K에서 32K로 2배 가량 늘고 더 나은 액세스 환경, 그래픽 파이프라인의 텍스처 출력, 더블 연산, 더 나은 동기화를 위한 Atomic 구조 지원 등이 추가된다.
3. 멀티스레딩 향상
GPU는 CPU처럼 CPU의 코어에 해당되는 많은 수의 스트림 프로세서를 제공하는데 DirectX 11에서는 이들을 비롯한 처리 과정에서의 효율성을 크게 높이는데 주안점을 두고 있다.
이전 DirectX 버전들에서는 여러 가지 스레드들이 동시에 요청될 경우 이들의 처리 과정에서 제한을 가져왔지만, DirectX 11에서는 이의 처리 과정과 효율을 높여 멀티스레딩의 처리 효율을 높였다.
DirectX 11 하드웨어는 DirectX 10/ 10.1 하드웨어보다 더 향상된 멀티스레딩 능력을 제공하게된다.
DirectX 11은 이처럼 기존 DirectX 10/ 10.1과 달라진 여러 가지 기술들을 도입하고 있는데 이들 중 GPGPU 기술에 활용되는 DirectX Compute를 조금 더 자세히 살펴보도록 하자.
GPGPU를 지원하는 NVIDIA와 AMD
GPGPU 기술은 이미 오래전부터 소개되어 왔는데 데스크탑에 본격적으로 소개한 곳은 NVIDIA로 NVIDIA는 C언어 기반 CUDA를 경쟁사보다 먼저 소개했으며, AMD ATI도 ATI Stream을 소개하고 있다. 인텔의 경우 x86 기반 코어 다수로 이루어진 라라비 (Larrabee)를 준비중이며, CPU에 보다 가까운 만큼 GPGPU 기술에서 좋은 모습을 보여줄 것으로 예상되고 잇다.
또한, 애플 (Apple)을 주축으로 하는 여러 업체들이 연합하여 만든 공개 표준 OpenCL도 소개된 가운데 윈도우 7에서도 DirectX 11 API를 기반으로 한 GPGPU 기술인 DirectX Compute를 소개했다.
[NVIDIA C기반 CUDA, 공개 표준 OpenCL과 DX Compute 지원]
[AMD ATI Stream, 공개 표준 OpenCL과 DX Compute 지원]
NVIDIA와 AMD ATI의 GPGPU 기술은 각각 CUDA와 ATI Stream으로 소개했지만, 현재 GPGPU 기술이 표준으로 정해지지 않은 상황이다. 그렇기 때문에 양사는 자사의 GPGPU 기술 뿐만 아니라 공개 표준인 OpenCL과 윈도우 7에 포함된 DirectX 11이 지원하는 GPGPU 기술인 DirectX Compute를 지원한다.
GPGPU를 위한 DirectX Compute
[DirectX 11, Compute Shader를 통한 최종 처리]
DirectX Compute Shader는 Direct 3D 11 그래픽 하드웨어 즉, GPU를 범용목적에 사용하기 위해 새롭게 만들어진 쉐이더 타입이다.
DirectX Compute Shader는 Direct 3D에 내장된 기술이기 때문에 DirectX API와의 분리가 불필요하여 연계성이 높다. 그리고 그래픽 쉐이더와 메모리를 공유하기 때문에 메모리 낭비를 줄일 수 있다.
또한, GPU의 병렬 처리 능력을 통해 CPU로 부족했던 성능을 보완할 수 있으며, 게임에 독특하고 새로운 효과 구현, 그리고 기존 Vertex와 Pixel Shader 기반의 솔루션보다 높은 성능을 제공할 수 있게 된다.
물론, NVIDIA와 AMD ATI 모두 기존 DirectX 10/ 10.1 하드웨어들에서도 사용할 수 있는 호환성을 제공한다. 그렇기 때문에 기존 GPU들도 DirectX 11 지원 GPU들보다 성능은 떨어지겠지만, 활용 가능하다.
DirectX Compute의 활용 분야
[DirectX Compute 활용 분야]
GPU는 CPU와 달리 부동소수점 연산을 이용한 병렬 처리 능력에 강점을 보이며, CPU의 분기 예측과 랜덤 메모리 액세스 등의 범용 컴퓨팅 즉, 시리얼 명령 처리의 강점을 완전히 대체할 수 없다. 그렇기 때문에 GPU는 CPU의 처리가 가지는 약점을 보완할 수 있는 역할을 수행할 수 있고 이렇게 만들어진 기술이 바로 GPGPU 기술이라고 볼 수 있다.
GPU의 강점을 활용할 수 있는 분야는 병렬 처리 능력이 발휘되는 부분으로 병렬 방식 프로그램으로는 비디오 트랜스코딩이나 게임의 물리엔진, 이미지 프로세싱, 과학 컴퓨팅, 3D 그래픽 (레이트레이싱 등) 등을 들 수 있다.
NVIDIA의 경우 자사의 CUDA를 통해 GPU로 가속되는 PhysX 물리엔진 도입 및 영상 편집 및 트랜스코딩에 활용하고 있고 AMD ATI 역시 영상 편집 및 트랜스코딩, 하복 물리엔진을 GPU로 가속하는 데모를 시연했다.
윈도우 7의 디코드/ 인코드 지원
윈도우 7은 윈도우 비스타에서 멀티미디어 지원이 더욱 강화되며, 이의 일환으로 다양한 코덱 추가 및 디코드/ 인코드 기능을 제공한다. 또, DXVA - HD (DirectX Video Acceleration - High Definition) 지원을 통해 H.264 코덱 등의 그래픽 카드를 이용한 하드웨어 가속을 지원한다.
윈도우 7이 지원하고 있는 파일 포맷은 MP4, AVI, Mov, 3GP, AVCHD, ADTS, M4A, DVR-MS, WTV가 있으며, 내장된 코덱은 H.264, MPEG4-SP, ASP/ DIVX/ Xvid, MJPEG, DV, AAC-LC, AAC-HE가 있다.
DirectX Compute를 이용한 윈도우 7의 트랜스코딩
최근 휴대용 디지털기기의 활용도가 높아지면서 고용량의 파일을 휴대용 기기 등에 맞추어 트랜스코딩 작업을 자주하게 되는데 윈도우 7은 이를 더욱 편리하게 하기 위해 자체 트랜스코딩 기능을 지원하고 있다.
[윈도우 7, MFT (Medai Foundation Transcode) Interface]
윈도우 7은 새롭게 추가된 MFT (Media Foundation Transcode) Interface를 통해 트랜스코딩과 인코드/ 디코드를 위해 GPU를 사용할 수 있도록 해준다. 새롭게 추가된 MFT 인터페이스는 GPGPU 지원을 위한 DirectX Compute를 이용하여 트랜스코딩 등을 도울 수 있도록 만들어졌다.
영상 트랜스코딩 등의 작업은 앞서 언급했듯이 GPU의 SIMD 코어 즉, 스트림 프로세서가 CPU의 처리처럼 멀티 스레딩으로 처리하되며, GPU의 병렬 처리 능력을 활용하여 CPU로만 처리하던 방식보다 높은 처리 성능을 얻을 수 있다. 특히, GPGPU를 이용한 기술들은 휴대용 디지털 기기에 적합한 파일 포맷을 만드는 트랜스코딩 작업처럼 화질보다 속도 위주의 작업에서 더욱 유리하다.
윈도우 7, 드래그 앤 드롭 트랜스코딩 : MFT 인터페이스로 GPU 가속
[윈도우 7, GPGPU 이용한 드래그 앤 드롭 트랜스코딩]
윈도우 7이 지원하고 있는 GPGPU (GPU를 이용한 범용 컴퓨팅, CPU가 하던 일 일부를 GPU가 분담)를 위한 기술은 DirectX Compute로 소개되었다. 윈도우 7에서 지원하는 GPGPU 기술은 HDD에 위치한 원본 파일을 휴대용 미디어 플레이어에 드래그 앤 드롭 하는 것으로 손쉽게 영상 파일변환 즉, 재인코딩 (트랜스코딩)을 지원한다. 즉, 윈도우 7에서 지원되는 MFT (Media Foundation Transcode) 인터페이스를 통해 GPU 가속 트랜스코딩을 지원한다.
드래그 앤 드롭 트랜스코딩은 소니 워크맨이나 크리에이티브 Zen W 등과 같이 동영상을 지원하고 있는 휴대용 미디어플레이어들에서 사용 가능하다.
|