GPU Management Platform

GPU-XXX-Project for Cryptography

這個專案的背景是這樣,寫一個小小的GPU計算排程系統,它要求管理和排程機房裡的N臺GPU計算伺服器,以實現大規模的平行計算處理。主要的計算內容是密碼學方面的計算(金鑰窮舉什麼的估計也能用得上)。如下圖所示的結構,系統中分為三個部分: 計算節點,管理節點和排程節點。

系統架構圖
 

計算節點

每個計算節點上擁有一個到多個GPU,可以實現平行計算邏輯無關的資料(密碼學中是很適合這種密集型計算的方法)。每個計算節點的計算效能和能力都各有不同,這使得排程節點在分配任務時需要有演算法針對每個計算伺服器“量力而行”的分配計算任務。GPU 部分的軟體大概執行方式圖如下:

Created with Raphaël 2.1.2啟動CPU接受任務子任務分解器插入任務管理佇列未接受完?結束yesno

GPU軟體負責從任務佇列中獲取子任務並計算出結果,將結果返回到給CPU的監控軟體,由監控軟體將結果返回到排程節點。
 

排程節點

排程節點的主要工作是對任務的分解,先將任務分解成若干子任務,並將子任務送入到任務排程器中,節點排程器實際上主要是管理子任務,包括子任務的分發,子任務執行狀態監控,子任務結果處理等。任務排程器的宗旨就是將大任務順利、可靠的分佈在多個GPU伺服器上快速計算完成。參考別人的圖,任務排程節點的結構如下所示:

任務排程節點
 

管理節點

管理節點的主要作用就是GPU叢集計算的使用者管理端,它負責系統與使用者互動,包括使用者提交計算任務、更新、修改、刪除計算任務或者檢視計算任務狀態等。按照需求,應該是一個以web方式體現的方法。
 

summary

縱觀整個Project,任務排程器是一個比較難啃的骨頭,至少負責的工作內容是最多的,其次是計算節點,計算節點負責二級子任務分解,運算結果返回等等。這兩個部分的優先順序高,其中任務排程器的優先順序為最高。由於系統之前已經有了一個prototype , 因此打算在這個基礎上實現一步一步替換。計劃如下:
1. 瞭解計算節點和排程節點之間的通訊規則和通訊報文方式,在該通訊報文的基礎上實現一個簡單版本的節點排程器。
2. 實現任務排程器上的任務分解功能,用最簡單地方式對任務進進行分解和管理。再逐步完善。
3. 在前兩者的基礎上,做一個簡單地管理端,負責使用者與系統之間的互動。