Tesla Cluster구축
홈 > CUDA > Tesla Cluster구축 > 가상화 환경

가상화 환경

가상화 시스템

가상화 시스템에서의 CUDA 사용에 대한 문의가 많은 것이 사실입니다. 이에 대해 자세히 살펴보도록 하겠습니다.  개발자의 경우 Windows 환경과 Linux 환경에서 동시에 CUDA 관련 어플리케이션을 개발하는 경우 VMWare 등의 시스템에서 CUDA를 지원하지 않기 때문에 매번 재부팅을 해야 하는 번거로움이 있습니다. NVIDIA는 SLI Multi-OS를 지원함으로써 Virtual Machine(Guest OS)에서 CUDA를 돌릴 수 있도록 하고 있습니다. 

 

CUDA 인식 실패

가상화 시스템은 크게 2가지로 나뉩니다. 소프트웨어 에뮬레이션과 하드웨어 바이패싱 방법입니다. 소프트웨어 에뮬레이션의 대표적인 방법은 SW제품군에서 설명한 VMWare가 시장의 80% 이상을 차지하고 있습니다. 관련 정보는 SW제품군의 VMWare 정보를 참고하시기 바랍니다.  이 가상화 시스템은 게스트 OS에 자체 하드웨어 드라이버를 제공합니다. 따라서, NVIDIA 그래픽카드를 꽂아도 CUDA 하드웨어로 잡히는 것이 아니라, VMWare 가상 그래픽카드로 잡히므로, CUDA 어플리케이션을 실행할 수 없습니다.

 

[VMware방식]

 

또한, Windows HPC 2008의 경우  Hyper-V를 제공하지만, 아직 CUDA application을 실행시킬 수 없습니다.

 

File:Viridian Architecture.svg

[hyper-V방식]

 

Hyper-V architecture overview

[좀더 구체적인 Hyper-V 방식 소개]

 

H/W바이패스 기능

하드웨어 배이패싱 기법은 Intel-VT, AMD-v에서 제공하는 H/W기반의 바이패스 기능과 Xen을 이용한 H/W 명령의 바이패스를 통해 에뮬레이션을 사용하지 않고, Guest OS에서 물리적인 하드웨어를 직접 인식하도록 도와줍니다.

 

[Xen의 구조]

 

인텔의 가상화 기술은 다음의 주소를 통해 정보를 얻을 수 있습니다.

http://www.intel.com/cd/channel/reseller/apac/kor/products/server/processors/264268.htm

[Intel-VT, Intel-VTd 구조]

 

 

AMD의 가상화 기술은 다음의 주소를 통해 정보를 얻을 수 있습니다.

http://www.amd.com/kr-kr/Processors/ProductInformation/0,,30_118_8826_14287,00.html

[AMD-v 구조 소개]

 

NVIDIA SLI Multi-OS

HP의 Z800  워크스테이션에서 Intel-VT기법과 Parallels사의 H/W 바이패싱 기법을 이용하면 Host OS 뿐만 아니라 Guest OS(Virtual Machine)에서도 OpenGL가속, DirectX 가속 이외에 CUDA application을 작동시킬 수 있습니다.  원래는 워크스테이션에서 OpenGL가속을 지원하기 위해 개발되었지만, H/W적으로 바이패싱하므로 Guest OS에서 CUDA 디바이스를 인식하여 CUDA 어플리케이션을 실행할 수 있습니다.

 

Parallels사의 가상화 기술은 다음의 주소를 통해 정보를 얻을 수 있습니다.

http://www.parallels.com/products/extreme/

[Parallels 사의 제품을 이용한 Guest OS 모습]

 

가능제품

아직은 HP의 Z800워크스테이션에서 Parallels의 가상화 솔루션에서만 Virtual Machine에서 CUDA를 실행할 수 있습니다. 하지만, Parallels사의 기술은 사실 Linux의 Xen 가상화 기술을 모태로 하고 있기 때문에 조만간 다양한 플랫폼에서 CUDA 가능한 Virutal Machine Solution을 출시할 것으로 기대하고 있습니다.