基于MATLAB的局域網(wǎng)集群的構(gòu)建
目前的常用科學(xué)計(jì)算大多基于Matlab 環(huán)境,因此,開(kāi)發(fā)基于Matlab 的并行計(jì)算平臺(tái)也有很大的必要性。在本文的設(shè)計(jì)中,并行優(yōu)化平臺(tái)的運(yùn)行是在Matlab 環(huán)境中進(jìn)行的,由于Matlab 是一種跨平臺(tái)軟件,因此整個(gè)并行計(jì)算環(huán)境也間接地實(shí)現(xiàn)了跨平臺(tái),滿(mǎn)足了在Windows 平臺(tái)下并行計(jì)算的需要。在平臺(tái)實(shí)現(xiàn)中,如果能有效地利用大粒度分解計(jì)算,可以降低程序?qū)崿F(xiàn)的復(fù)雜性。從機(jī)群系統(tǒng)的應(yīng)用要求上來(lái)看,也需要大粒度的并行,以減少通訊開(kāi)銷(xiāo),從而獲得更高效率。因此,并行優(yōu)化計(jì)算環(huán)境的設(shè)計(jì)是大粒度的。Parallel Computing Toolbox并行計(jì)算功能現(xiàn)已整合到Optimization Toolbox和Genetic Algorithm and Direct Search Toolbox等優(yōu)化求解器之中,讓用戶(hù)能夠在不會(huì)對(duì)其現(xiàn)有應(yīng)用造成過(guò)多影響的情況下,在多核計(jì)算機(jī)和計(jì)算機(jī)集群上更好地解決密集型計(jì)算優(yōu)化問(wèn)題,以進(jìn)一步簡(jiǎn)化并行應(yīng)用的開(kāi)發(fā)。
實(shí)驗(yàn)室內(nèi)局域網(wǎng)所用機(jī)器均采用操作系統(tǒng)為WINDOWS XP SP2,快速以太網(wǎng)網(wǎng)卡10/100Mbps,通過(guò)路由器連接,并安裝MATLABR2008b及相關(guān)工具箱,表3.1和表3.2分別給出了集群相關(guān)硬件配置和安裝軟件
3.2.2軟件安裝和MDCE配置
安裝完畢后在雙擊主節(jié)點(diǎn)機(jī)的matlabrootflexlm文件夾下的lmtool.exe(matlabroot表示matlab軟件的安裝目錄,下面不再作說(shuō)明),開(kāi)啟Matlab License Server。 其他節(jié)點(diǎn)機(jī)除了無(wú)須再安裝License Manager外,其他步驟大致與主節(jié)點(diǎn)機(jī)相同,整個(gè)詳細(xì)安裝步驟不再贅述,可參考MATLAB® & Simulink® Release 2008b Installation Guide for Windows®和Installing MATLAB® Distributed Computing Server™ 4.0 on a Windows® Operating System Cluster,如果出現(xiàn)錯(cuò)誤,仔細(xì)排查并認(rèn)真查看文檔和在線支持。成功在不同機(jī)器上安裝好 #p#page_title#e#MATLAB相關(guān)產(chǎn)品和工具箱并配置分布計(jì)算環(huán)境是重要的一步也是必不可少的一步,網(wǎng)絡(luò)機(jī)群本身無(wú)法進(jìn)行分布并行計(jì)算,并行程序開(kāi)發(fā)和應(yīng)用很大程度上依賴(lài)軟件和算法的支持。 MDCE配置 如果存在舊的mdce服務(wù),則要先停止,打開(kāi)DOS命令窗口,輸入cd oldmatlabroot oolboxdistcompinwin32,輸入命令mdce uninstall,并刪除相應(yīng)日志和檢查文件C:TEMPMDCE,其它機(jī)器上如果存在舊的安裝同樣方法移除。安裝并開(kāi)啟新的mdce服務(wù),同樣在DOS命令窗口輸入cd matlabroot oolboxdistcompinwin32,切換到新的mdce目錄,輸入命令mdce uninstall即安裝mdce服務(wù),mdce start啟動(dòng)服務(wù),其他機(jī)子上重復(fù)這個(gè)過(guò)程這樣所有機(jī)器上都啟動(dòng)了mdce服務(wù),以后每次重啟開(kāi)機(jī)都會(huì)隨系統(tǒng)自動(dòng)運(yùn)行。 首先在任一臺(tái)機(jī)器上開(kāi)啟調(diào)度管理器(Job Manager),進(jìn)入DOS命令窗口,用cd 命令切換到matlabroot oolboxdistcompinwin32,啟動(dòng)JobManager語(yǔ)句格式為:startjobmanager –flags ,flags為操作標(biāo)記,如表3.3所示 如startjobmanager -name MyJobManager 即在本地機(jī)器上開(kāi)啟一個(gè)名為MyJobManager的作業(yè)管理器,startjobmanager -name myjm -remotehost SQY 則是在主機(jī)SQY上開(kāi)啟一個(gè)名為myjm的作業(yè)管理器。這個(gè)過(guò)程要保證網(wǎng)絡(luò)暢通互連,并各機(jī)器運(yùn)行mdce服務(wù)。在集群上可開(kāi)啟多個(gè)Job Manager,但名稱(chēng)要唯一,不能重復(fù)。如果要停止一個(gè)作業(yè)管理器,則用stopjobmanager –flags 格式與上基本相同,不同重述。查看其運(yùn)行狀態(tài)可用語(yǔ)句nodestatus -remotehost <job manager hostname>,然后再開(kāi)啟worker,語(yǔ)句格式為start worker –flags ,flags為操作標(biāo)記,如表3.4所示 如startworker -name worker1 -remotehost bug -jobmanager myjm -jobmanagerhost SQY 即在節(jié)點(diǎn)機(jī)bug上開(kāi)啟一個(gè)名為worker1由主節(jié)點(diǎn)機(jī)SQY上名為的myjm調(diào)度器進(jìn)行管理,一臺(tái)機(jī)器上可開(kāi)啟多少worker,一個(gè)較好的原則是其個(gè)數(shù)不應(yīng)超過(guò)這臺(tái)機(jī)器處理器內(nèi)核個(gè)數(shù),多了無(wú)益,性能也不會(huì)有多大提升。如果要停止某一臺(tái)機(jī)子上的worker,則用語(yǔ)句stopworker –flags,flags標(biāo)記同表3.4。 只要保持各臺(tái)機(jī)器網(wǎng)絡(luò)互連、解除防火墻相應(yīng)程序和端口的阻止及mdce服務(wù)的正常運(yùn)行,這些命令可在任一臺(tái)機(jī)器上執(zhí)行,完成整個(gè)的集群配置工作。用nodestatus -flags命令可查看各機(jī)器上Job Manager和worker的運(yùn)行狀態(tài)。下圖3.8所示,在主節(jié)點(diǎn)(服務(wù)器節(jié)點(diǎn))SQY的主機(jī)上有一個(gè)名為myjm的作業(yè)管理器,管理局域網(wǎng)8個(gè)worker,且在主節(jié)點(diǎn)機(jī)上運(yùn)行有2個(gè)worker。 MATLAB還提供了圖形用戶(hù)界面Admin Center 來(lái)管理集群機(jī)器,點(diǎn)擊MATLAB主菜單“parallel”下的“Admin Center”,即可進(jìn)入管理中心圖形用戶(hù)界面,可以載入建立好的局域網(wǎng)集群,查看、編輯和添加節(jié)點(diǎn)機(jī),如圖3.9所示,進(jìn)行客戶(hù)端機(jī)器、節(jié)點(diǎn)機(jī)之間的連接、端口及主機(jī)名一致性等測(cè)試,最后給出測(cè)試結(jié)果,如圖3.10所示。在測(cè)試前注意先關(guān)閉防火或設(shè)置相應(yīng)的例外程序和端口,不然可能會(huì)出現(xiàn)各節(jié)點(diǎn)機(jī)連接測(cè)試失敗的情況。 上節(jié)已經(jīng)介紹了軟件安裝配置的一個(gè)過(guò)程,總的來(lái)說(shuō)如下圖所示: 計(jì)算環(huán)境搭建好了,下面對(duì)各個(gè)計(jì)算節(jié)點(diǎn)作一個(gè)簡(jiǎn)單的測(cè)試: 計(jì)算平臺(tái)性能測(cè)試是一個(gè)重要的環(huán)節(jié),通過(guò)MATLAB提供類(lèi)似Linpack的標(biāo)準(zhǔn)測(cè)試程序[56](MATLAB Benchmark),包括大型稠密矩陳LU分解、快速傅立葉變換(Fast Fourier transform,FFT)、解范德波爾方程(van der Pol equation)、解對(duì)稱(chēng)稀疏線性系統(tǒng)及2D,3D圖形顯示,表3.6所示。測(cè)試程序主要針對(duì)特定的MATLAB版本在不同機(jī)器的浮點(diǎn)運(yùn)算性能(Floating-point)、規(guī)則和不規(guī)則存儲(chǔ)、數(shù)據(jù)結(jié)構(gòu)、整點(diǎn)和浮點(diǎn)混合運(yùn)算性能等出對(duì)比。 #p#page_title#e#后兩項(xiàng)圖形測(cè)試不是本節(jié)主要測(cè)試內(nèi)容,為附帶測(cè)試,對(duì)前四項(xiàng)作簡(jiǎn)要介紹 對(duì)上面測(cè)試程序在節(jié)點(diǎn)機(jī)上連續(xù)4次運(yùn)行,在MATLAB命令窗口輸入>>t=bench(4),得到如下結(jié)果,各程序運(yùn)行計(jì)算以秒(second)記,圖3.11 (a),(b)給出了本臺(tái)機(jī)器測(cè)試結(jié)果與其他不同操作系統(tǒng)和處理器主頻下相同MATLAB版本的對(duì)比情況,測(cè)試結(jié)果與操作系統(tǒng)類(lèi)型,處理器主頻,開(kāi)啟的線程數(shù),內(nèi)存大小等有關(guān),從中可以看出本機(jī)的浮點(diǎn)計(jì)算,規(guī)則及不規(guī)則存儲(chǔ)等方面的性能,各次測(cè)試結(jié)果在5%到10%之間浮動(dòng)是正常的,因?yàn)椴煌瑫r(shí)刻的內(nèi)在和CPU使用率是有所變化的,這里不再給出細(xì)致的比較分析 (a)測(cè)試程序運(yùn)行時(shí)間對(duì)比 (b)測(cè)試程序運(yùn)行相對(duì)速度柱狀圖 圖3.11 測(cè)試程序運(yùn)行時(shí)間及對(duì)比 由于其他兩臺(tái)機(jī)器與主節(jié)點(diǎn)機(jī)配置一樣,不再單獨(dú)測(cè)試,下面是前四個(gè)測(cè)試程序?qū)悍植际接?jì)算進(jìn)行測(cè)試,測(cè)試結(jié)果如圖3.12所示,由于集群各計(jì)算中各個(gè)時(shí)刻CPU、內(nèi)在使用率和網(wǎng)絡(luò)通信延遲等因素存在差異,因此在集群計(jì)算過(guò)程中,要考慮的因素主要有通信技術(shù)、負(fù)載均衡(指分配到各個(gè)處理結(jié)點(diǎn)上并行執(zhí)行的子任務(wù)即負(fù)載的均衡程度)、并行粒度、安全等
MATLAB產(chǎn)品及工具箱
FLEXnet license manager
計(jì)算節(jié)點(diǎn)測(cè)試
這了更好了體現(xiàn)并行計(jì)算的特點(diǎn),最后運(yùn)用并行遺傳算法對(duì)一個(gè)計(jì)算耗時(shí)較長(zhǎng)的耗時(shí)問(wèn)題進(jìn)行了計(jì)算結(jié)果如下圖表所示,這里不作具體分析: