2012年4月27日 星期五
Building the GPU Cluster
我們有幾台 GPU Server,老師有想要將他建立成一個 GPU Cluster 的 prototype, 在Infrastructure,我們有了機器,那問題就是要如何管理這些資源(CPU, Mem, Network, GPU ...)。
我的想法是,有三個部份要做,分別為基礎建設的管理、程式介面(Platform)、用戶介面。
1. 基礎建設的管理
用以往實驗室常用的方式,就是將程式寫成 components 然後再不同台機器上運作, 接著建個 data flow 交換資料。以我的經驗,這樣的方式在多個使用者時不免會有一人當機,整車人都不能用機器。虛擬化既然這麼紅,那我們是不是用虛擬化的管理方式呢? 現有的 Hypervisor 有 VMWare, xen, kvm 等。將每個 component 放在一個虛擬機器裡頭,接著也一樣用 data flow 做溝通,萬一某台虛擬機器死翹翹,那也不會影響機器內的其他用戶,是一個可行的方法。再者跨多台機器的 Management Tool 也是很多,像是 Nimbus, OpenNebula, Eucalyptus,他們可以用來管理這些 Hypervior。如此一來,我們有了一個中控中心,可以發佈虛擬機器和關閉虛擬機器,有人要執行他的 component 們,我們就給他幾台虛擬機吧。
2. 程式介面
既然 DataFlow 是這樣一個好的傳統,那我們也許可以繼續沿用,每個用戶將他的程式寫成一個 component,然後我們將他放在虛擬機裡。他要 CPU/Mem/Network 我們就給他,他要 GPU,我們也給他。這裡比較難的地方就是要怎麼將 GPU 給虛擬化,有人有辦法請給我一點方向。好加在的是,CUDA 4.0 允許多工,多個人再一台機器上享用 GPU 也不會有太大的問題,剩下的就是 GPU 虛擬化的問題。
3. 用戶介面
前端的用戶介面,負責與使用者溝通,讓他們上傳程式,觀看結果。以往的方法都是寫個 Shell,像是小大象 Hadoop 的 Shell,但我想是不是有其他方法呢?這裡頭還需要 Build System,讓上傳的 Component 可以順利編譯。所以用戶介面要有幾個功能,包括上傳資料程式、建置系統、瀏覽結果的介面。
特別打出來,希望各位看倌、高人能給一些建議。
以後這裡就變一個討論串了,歡迎不吝嗇提出意見。
訂閱:
張貼留言 (Atom)
3 則留言:
GPU Virtualization on VMware's Hosted I/O Architecture
http://static.usenix.org/event/wiov08/tech/full_papers/dowty/dowty_html/
這看起來是一個不錯的解法?我google "gpu virtualization"後跑出很多資料,但很抱歉的是我背景不熟無法判斷 Q_Q,請大大指點。
這篇我有看過,key point 都有講到,我覺得是一個很好的參考。
請問一下,有哪位大大可以教我在windows下安裝CUDA然後用Visual Studio C/C++ 來寫GPU的程式嗎?
張貼留言