康 雷,張樹(shù)本,楊 堅(jiān)
(中國(guó)科學(xué)技術(shù)大學(xué)自動(dòng)化系,合肥 230027)
基于B/S模式的GPU集群管理系統(tǒng)設(shè)計(jì)
康 雷,張樹(shù)本,楊 堅(jiān)
(中國(guó)科學(xué)技術(shù)大學(xué)自動(dòng)化系,合肥 230027)
普通PC機(jī)上搭載的GPU顯卡存在功耗低、性能差的問(wèn)題,不能滿足大規(guī)模統(tǒng)一計(jì)算設(shè)備架構(gòu)(CUDA)并行計(jì)算的需求。為此,將計(jì)算密集型任務(wù)轉(zhuǎn)移到GPU集群中完成,設(shè)計(jì)并實(shí)現(xiàn)基于B/S模式的GPU集群管理系統(tǒng),用戶通過(guò)網(wǎng)頁(yè)提交CUDA代碼即可得到GPU集群計(jì)算后的結(jié)果。測(cè)試結(jié)果表明,該系統(tǒng)可使用戶在任何能使用瀏覽器的電子設(shè)備上完成基于CUDA的計(jì)算密集型任務(wù),不僅方便用戶使用,而且能加速程序的運(yùn)行過(guò)程,提高工作效率。
GPU集群;統(tǒng)一計(jì)算設(shè)備架構(gòu);B/S模式;資源管理;任務(wù)調(diào)度
DO I:10.3969/j.issn.1000-3428.2015.10.002
GPU在并行計(jì)算處理能力上大大超過(guò)了CPU,而且隨著NVIDIA公司的統(tǒng)一計(jì)算設(shè)備架構(gòu)(Compute Unified Device Architecture,CUDA)[1]的推廣也使得GPU逐漸走向成熟。然而,普通PC機(jī)上搭載的顯卡功耗低、性能差,往往不能滿足大規(guī)模CUDA并行計(jì)算的需求。隨著多核技術(shù)的發(fā)展和集群計(jì)算的應(yīng)用,GPU集群系統(tǒng)針對(duì)計(jì)算密集型任務(wù)在速度上有更大優(yōu)勢(shì)。
當(dāng)前大多數(shù)作業(yè)管理系統(tǒng)都是針對(duì)CPU核進(jìn)行調(diào)度的[2-3]。對(duì)于計(jì)算密集型任務(wù),CPU核的服務(wù)器和 GPU核的服務(wù)器相比,功耗更大、熱量更多,計(jì)算效率反而更低。因此,出現(xiàn)了單CPU+單GPU的資源調(diào)度系統(tǒng)[4]和單結(jié)點(diǎn) GPU和多核CPU協(xié)同計(jì)算的系統(tǒng)[5],而GPU集群服務(wù)系統(tǒng)的研究目前還比較少。文獻(xiàn)[6]研究了 3D建模在GPU集群上的應(yīng)用,體現(xiàn)出GPU集群處理計(jì)算密集型任務(wù)的優(yōu)勢(shì)。文獻(xiàn)[7]提出了GPU集群調(diào)度管理系統(tǒng),但該系統(tǒng)采用的是C/S模式,不方便用戶在各種不同的系統(tǒng)平臺(tái)上高效執(zhí)行并行計(jì)算任務(wù)。文獻(xiàn)[8]擴(kuò)展了資源管理系統(tǒng)TORQUE,使其
可以應(yīng)用于GPU集群的管理中,但主要偏重于研究GPU集群資源的動(dòng)態(tài)申請(qǐng)、分配與銷毀,較少涉及任務(wù)調(diào)度策略。文獻(xiàn)[9]提出了面向 GPU集群的任務(wù)自動(dòng)分配系統(tǒng),但其所設(shè)計(jì)的任務(wù)分配策略并沒(méi)有考慮當(dāng)前GPU集群的運(yùn)行狀態(tài)。本文針對(duì)GPU集群系統(tǒng)提出一種基于優(yōu)先級(jí)調(diào)度策略的任務(wù)隊(duì)列管理方案,同時(shí)考慮集群當(dāng)前運(yùn)行狀態(tài),從而提高任務(wù)調(diào)度的效率。
基于B/S模式的GPU集群管理系統(tǒng)設(shè)計(jì)框圖如圖1所示。該系統(tǒng)主要由W eb門戶、集群管理系統(tǒng)和GPU集群三部分組成。其中,Web門戶接收用戶任務(wù)請(qǐng)求,并提交給集群管理系統(tǒng);集群管理系統(tǒng)調(diào)度用戶提交的任務(wù),同時(shí)維護(hù)GPU集群狀態(tài),該系統(tǒng)由任務(wù)隊(duì)列、GPU集群資源管理模塊、任務(wù)調(diào)度模塊和GPU狀態(tài)采集模塊四部分組成;GPU集群執(zhí)行任務(wù)請(qǐng)求并向用戶返回結(jié)果。
圖1 GPU集群管理系統(tǒng)整體設(shè)計(jì)框圖
2.1 任務(wù)隊(duì)列管理模塊
任務(wù)隊(duì)列管理模塊的作用是把用戶提交的CUDA任務(wù)作業(yè)根據(jù)優(yōu)先級(jí)調(diào)度策略放入到任務(wù)隊(duì)列中。本文系統(tǒng)采用的優(yōu)先級(jí)調(diào)度策略根據(jù)用戶申請(qǐng)的優(yōu)先級(jí)、提交任務(wù)的時(shí)間和用戶提交任務(wù)的頻率把用戶提交的CUDA任務(wù)作業(yè)進(jìn)行排序并放入任務(wù)隊(duì)列中。
本文系統(tǒng)分別給用戶提供普通權(quán)限和優(yōu)先級(jí)權(quán)限。新用戶注冊(cè)默認(rèn)是普通權(quán)限,優(yōu)先級(jí)權(quán)限需要和管理員申請(qǐng),而且比例不能超過(guò)1%。
為了防止優(yōu)先級(jí)用戶使用頻率過(guò)高使得整體用戶使用性能降低的問(wèn)題,提出了任務(wù)日志記錄的方案,把當(dāng)天(0:00-24:00)每個(gè)執(zhí)行完的任務(wù)都記錄在任務(wù)日志中(如圖2所示),包括用戶ID、作業(yè)ID和使用時(shí)間。用戶ID是提交該任務(wù)的用戶的ID,作業(yè)ID是任務(wù)隊(duì)列管理模塊在把用戶提交的任務(wù)放入任務(wù)隊(duì)列的時(shí)候分配給任務(wù)的 ID號(hào),使用時(shí)間是該任務(wù)在GPU中運(yùn)行的時(shí)間,即使用的GPU時(shí)間。
圖2 任務(wù)日志
如果一個(gè)任務(wù)被分配給某個(gè)GPU,運(yùn)行過(guò)程中GPU內(nèi)存占用不斷增大并使得GPU內(nèi)存資源的95%被占用時(shí),為了確保其他程序可以得到正確的結(jié)果,會(huì)暫時(shí)把這個(gè)任務(wù)停止掉,然后,把這個(gè)任務(wù)排放在任務(wù)隊(duì)列的首位,重新分配GPU資源占用最少的GPU去執(zhí)行。
2.2 GPU狀態(tài)采集模塊
GPU狀態(tài)采集模塊周期性獲取GPU集群上所有GPU的狀態(tài)信息(例如GPU使用率等),保存到GPU設(shè)備狀態(tài)表中(如圖3所示),并通知任務(wù)調(diào)度模塊讀取GPU設(shè)備狀態(tài)表信息。狀態(tài)采集可以通過(guò)nvidia-sm i命令實(shí)現(xiàn)。
管理系統(tǒng)根據(jù)GPU設(shè)備狀態(tài)表查找出空閑的GPU設(shè)備予以分配。由于采集GPU狀態(tài)的過(guò)程也是要消耗計(jì)算資源的,因此GPU狀態(tài)采集模塊采取的策略是:當(dāng)任務(wù)調(diào)度模塊從任務(wù)隊(duì)列中取出一個(gè)任務(wù)的時(shí)候,GPU狀態(tài)采集模塊執(zhí)行一次采集任務(wù),將采集到的所有GPU信息傳遞給任務(wù)調(diào)度模塊。
2.3 任務(wù)調(diào)度模塊
任務(wù)調(diào)度模塊從任務(wù)隊(duì)列中取出一個(gè)任務(wù),根據(jù)GPU集群資源管理模塊給出的策略,選定目標(biāo)GPU,并將任務(wù)分配到這個(gè)目標(biāo)GPU中運(yùn)行,并更新任務(wù)狀態(tài)表(如圖4所示),綁定用戶 ID、使用的GPU設(shè)備ID和任務(wù)編號(hào)。
圖4 任務(wù)狀態(tài)表
2.4 GPU集群資源管理模塊
GPU集群資源管理模塊根據(jù)GPU狀態(tài)采集模塊周期性采集的數(shù)據(jù),選出當(dāng)前使用率最低的GPU,并將該GPU設(shè)備ID傳給任務(wù)調(diào)度模塊,使任務(wù)調(diào)
度模塊優(yōu)化調(diào)度,達(dá)到公平和高效的目的。
2.5 GPU計(jì)算單元
GPU是圖形處理單元,適合于大規(guī)模數(shù)值并行計(jì)算,但必須和CPU配合工作使用。在CPU+GPU體系結(jié)構(gòu)中,CPU負(fù)責(zé)邏輯處理,GPU負(fù)責(zé)計(jì)算密集型的數(shù)值處理,也就是說(shuō),CPU負(fù)責(zé)把需要GPU處理的任務(wù)和數(shù)據(jù)傳遞給GPU,GPU處理后把結(jié)果返回給CPU進(jìn)程。
GPU卡有4種工作模式:默認(rèn)模式,進(jìn)程獨(dú)占模式,線程獨(dú)占模式,禁用模式。默認(rèn)模式是共享模式,即允許多個(gè)進(jìn)程使用同一個(gè)GPU設(shè)備。本文設(shè)定GPU卡工作模式為共享模式。
3.1 任務(wù)隊(duì)列管理模塊
任務(wù)隊(duì)列資源調(diào)度流程如圖5所示。
圖5 資源調(diào)度流程
下面的checkUser函數(shù)檢查用戶在當(dāng)下是否具有高級(jí)用戶權(quán)限,返回值0表示是普通用戶權(quán)限,返回值1表示是優(yōu)先級(jí)用戶權(quán)限。
log列表是任務(wù)日志(如圖2所示),保存的是當(dāng)天(0:00-24:00)用戶提交任務(wù)和任務(wù)運(yùn)行情況。這里主要針對(duì)優(yōu)先級(jí)用戶,如果優(yōu)先級(jí)用戶在單位時(shí)間內(nèi)因運(yùn)行CUDA代碼而使用的GPU時(shí)間超過(guò)一定閥值(本例中使用1/50),則認(rèn)為該優(yōu)先級(jí)用戶使用優(yōu)先權(quán)限過(guò)于頻繁,為了公平原則,把該優(yōu)先級(jí)用戶當(dāng)作普通用戶對(duì)待,優(yōu)先級(jí)用戶提交的任務(wù)放入任務(wù)隊(duì)列尾部。直到該優(yōu)先級(jí)用戶使用GPU的時(shí)間小于設(shè)定的閾值的時(shí)候,才會(huì)恢復(fù)其優(yōu)先權(quán)限。這樣,在最大程度上保護(hù)了所有用戶的公平,使整體效率最高。
3.2 GPU狀態(tài)采集模塊
本文基于nvidia-smi采用python3語(yǔ)法寫了一個(gè)GPU狀態(tài)監(jiān)測(cè)模塊代碼checkGPUs.py,主要函數(shù)如下:
程序運(yùn)行示例如圖6所示。
圖6 GPU狀態(tài)采集模塊代碼運(yùn)行結(jié)果
3.3 CUDA程序執(zhí)行
CUDA程序如下:
本文系統(tǒng)采用多線程方式運(yùn)行CUDA程序,充分利用GPU資源并且防止程序阻塞。task列表是待執(zhí)行的任務(wù)隊(duì)列,每個(gè)元素包括用戶ID、作業(yè)ID和作業(yè)使用的GPU設(shè)備編號(hào);resultTable列表是執(zhí)行完畢后保存任務(wù)結(jié)果的隊(duì)列,每個(gè)元素包括用戶ID、作業(yè)運(yùn)行結(jié)果和使用的GPU設(shè)備編號(hào)。
本文系統(tǒng)的原型實(shí)驗(yàn)系統(tǒng)采用5臺(tái)Intel i7-4770 CPU的服務(wù)器,每臺(tái)掛載2個(gè)NVIDIA Geforce GTX680顯卡,操作系統(tǒng)Ubuntu 12.04 64位,編譯環(huán)境CUDA 6.0。
本文注冊(cè)了10個(gè)模擬用戶,1個(gè)享有最高優(yōu)先級(jí),其余9個(gè)是默認(rèn)優(yōu)先級(jí)。因?yàn)榫W(wǎng)頁(yè)采用cookie方式[10]存儲(chǔ)用戶登錄信息,所以必須打開(kāi) 3個(gè)不同的瀏覽器才能模擬3個(gè)用戶。根據(jù)文獻(xiàn)[11-13]提出的算法,寫出100×100矩陣乘法 CUDA代碼,并將其作為測(cè)試樣例代碼,測(cè)試界面如圖7所示,最上面的導(dǎo)航條是提供用戶登錄操作的,登錄進(jìn)來(lái)后可以在線上傳CUDA代碼在GPU集群中運(yùn)行。
圖7 用戶提交CUDA代碼并獲得結(jié)果的網(wǎng)頁(yè)界面
圖7左側(cè)上半部分是CUDA代碼填寫區(qū)域,左側(cè)下半部分是程序運(yùn)行后的輸出區(qū)域,如果代碼出錯(cuò),錯(cuò)誤信息也會(huì)顯示在這里。測(cè)試結(jié)果如表1所示。
表1 GPU集群服務(wù)器示例輸出信息
本文將計(jì)算密集型用戶任務(wù)轉(zhuǎn)移到GPU集群系統(tǒng)中完成,設(shè)計(jì)并實(shí)現(xiàn)了基于B/S模式的GPU集群管理系統(tǒng)。同時(shí),針對(duì)集群系統(tǒng)管理提出了一種基于優(yōu)先級(jí)調(diào)度策略的任務(wù)隊(duì)列管理方案,使得任務(wù)調(diào)度更加高效。下一步將對(duì)基于節(jié)能調(diào)度[14]的大規(guī)模GPU集群系統(tǒng)進(jìn)行研究。
[1] Nickolls J,Buck I,Garland M,et al.Scalable Parallel Programming with CUDA[J].Queue,2008,6(2):40-53.
[2] Yoo A B,Jette M A,Grondona M.SLURM:Sim p le Linux Utility for Resource Management[C]//Proceedings of JSSPP’03.Berlin,Germany:Springer,2003:44-60.
[3] Staples G.TORQUE Resource Manager[C]//Proceedings of ACM/IEEE Conference on Supercomputing. New York,USA:ACM Press,2006:8.
[4] 張 繁,王章野,姚 建,等.應(yīng)用GPU集群加速計(jì)算蛋白質(zhì)分子場(chǎng)[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2010,22(3):412-419.
[5] 沈 莉,陳 林.一種CPU+GPU資源調(diào)度系統(tǒng)的研究[J].高性能計(jì)算發(fā)展與應(yīng)用,2011,(1):28-31.
[6] Newall M,Holm es V,Lunn P.GPU Cluster for Accelerated Processing and Visualisation of Scientific and Engineering Data[C]//Proceedings of Science and Information Conference.Washington D.C.,USA:IEEE Press,2014:140-145.
[7] 李文亮.GPU集群調(diào)度管理系統(tǒng)關(guān)鍵技術(shù)的研究[D].武漢:華中科技大學(xué),2011.
[8] Prabhakaran S,Iqbal M,Rinke S,et al.A Dynamic Resource Management System for Network-attached Accelerator Clusters[C]//Proceedings of the 42nd International Conference on Parallel Processing. Washington D.C.,USA:IEEE Press,2013:773-782.
[9] 胡新明,盛沖沖,李佳佳,等.面向通用計(jì)算 GPU集群的任務(wù)自動(dòng)分配系統(tǒng)[J].計(jì)算機(jī)工程,2014,40(3):103-107,119.
[10] 王小紅.基于Cookie的單點(diǎn)登錄認(rèn)證機(jī)制實(shí)現(xiàn)[J].重慶工商大學(xué)學(xué)報(bào):自然科學(xué)版,2014,31(8):73-78.
[11] 梁娟娟,任開(kāi)新,郭利財(cái),等.GPU上的矩陣乘法的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2011,20(1):178-181.
[12] 劉進(jìn)鋒,郭 雷.CPU與GPU上幾種矩陣乘法的比較與分析[J].計(jì)算機(jī)工程與應(yīng)用,2011,47(19):9-11.
[13] 馬夢(mèng)琦,劉 羽,曾勝田.基于CUDA架構(gòu)矩陣乘法的研究[J].微型機(jī)與應(yīng)用,2012,30(24):62-64.
[14] 李 新,賈智平,鞠 雷,等.一種面向同構(gòu)集群系統(tǒng)的并行任務(wù)節(jié)能調(diào)度優(yōu)化方法[J].計(jì)算機(jī)學(xué)報(bào),2012,35(3):591-602.
編輯 金胡考
Design of GPU Cluster Management System Based on B/SM ode
KANG Lei,ZHANG Shuben,YANG Jian
(Department of Automation,University of Science and Technology of China,Hefei 230027,China)
Due to the low power and poor performance on an ordinary PC equipped with the graphics card,it can not meet the needs of large-scale Compute Unified Device Architecture(CUDA)parallel computing.Aiming at these problems,the compute-intensive user tasks are transferred to the GPU cluster system,the GPU cluster management system is designed and implemented based on B/S mode.The user submits the CUDA code through the web and gets results from the GPU cluster management system.Test result show s that the compute-intensive tasks can be done on any browserbased electronic devices.It brings convenience for the users,accelerates the process of running the program,saves the users’time and greatly improves the users’efficiency.
GPU cluster;Compute Unified Device Architecture(CUDA);B/S mode;resource management;task scheduling
康 雷,張樹(shù)本,楊 堅(jiān).基于B/S模式的GPU集群管理系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)工程,2015,41(10):6-9.
英文引用格式:Kang Lei,Zhang Shuben,Yang Jian.Design of GPU Cluster Management System Based on B/S Mode[J].Computer Engineering,2015,41(10):6-9.
1000-3428(2015)10-0006-04
A
TP311
國(guó)家自然科學(xué)基金資助重點(diǎn)項(xiàng)目(61233003);國(guó)家自然科學(xué)基金資助面上項(xiàng)目(61174062);中央高校基本科研業(yè)務(wù)費(fèi)專項(xiàng)基金資助項(xiàng)目(WK 2100100021)。
康 雷(1990-),男,碩士研究生,主研方向:多媒體計(jì)算;張樹(shù)本,博士研究生;楊 堅(jiān),副教授、博士生導(dǎo)師。
2014-10-19
2014-11-21E-m ail:kanglei@mail.ustc.edu.cn