




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
MATLAB分布式并行計算環境(一)2010-05-1613:46前言:之前在本博客上發過一些關于matlab并行計算的文章,也有不少網友加我討論關于這方面的一些問題,比如matlab并行計算環境的建立,并行計算效果,數據傳遞等等,由于本人在研究生期間做論文的需要在這方面做過一些研究,但總體感覺也就是一些膚淺的應用,現已工作,已很少再用了,很多細節方面可能也記不清了,在這里將以前做的論文內容做一些整理,將分幾個小節,對matlab并行計算做"一個簡要的介紹,以期對一些初學者有所幫助,當然最主要的還是多看幫助文檔及相關技術文章!有不當之處敬請各位網友指正,3.1Matlab并行計算發展簡介MATLAB技術語言和開發環境應用于各個不同的領域,如圖像和信號處理、控制系統、財務建模和計算生物學。MATLAB通過專業領域特定的插件(add-ons)提供專業例程即工具箱(Toolbox),并為高性能庫(Libraries)如BLAS(BasicLinearAlgebraSubprograms,用于執行基本向量和矩陣操作的標準構造塊的標準程序)、FFTW(FastFourierTransformintheWest,快速傅里葉變換)和LAPACK(LinearAlgebraPACKage,線性代數程序包)提供簡潔的用戶界面,這些特點吸引了各領域專家,與使用低層語言如C語言相比可以使他們很快從各個不同方案反復設計到達功能設計。計算機處理能力的進步使得利用多個處理器變得容易,無論是多核處理器,商業機群或兩者的結合,這就為像MATLAB一樣的桌面應用軟件尋找理論機制開發這樣的構架創造了需求。已經有一些試圖生產基于MATLAB的并行編程的產品,其中最有名是麻省理工大學林肯實驗室(MITLincolnLaboratory)的pMATLAB和MatlabMPI,康耐爾大學(CornellUniversity)的MutiMATLAB和俄亥俄超級計算中心(OhioSupercomputingCenter)的bcMPIoMALAB初期版本就試圖開發并行計算,80年代晚期MATLAB的原作者,MathWorks公司的共同創立者CleveMoler曾親自為英特爾HyperCube和Ardent電腦公司的Titan超級計算機開發過MATLAB。Moler1995年的一篇文章“Whythereisn'taparallelMATLAB?[**]”中描述了在開了并行MATLAB語言中有三個主要的障礙即:內存模式、計算粒度和市場形勢。MATLAB全局內存模式的多數并行系統的分布式模式意味著大數據矩陣在主機和并行機之間來回傳輸。與語法解析和圖形例程相比,那時MATLAB只花了小部分的時間行例程上,這使得并行上的努力并不是很有吸引力。最后一個障礙對于一個資源有限的組織來講確實是一個現實,即沒有足夠多的MATLAB用戶將其用于并行機上,因此公司還是把注意力放在單個CPU的MATLAB開發上。然而這并不妨礙一些用戶團體開發MATLAB并行計算功能,如上面提到的一些實驗室和超級計算中心等。有幾個因素使并行MATLAB工程在MathWorks公司內部變得很重要,首先MATALB已經成長為支持大規模工程的領先工程技術計算環境;其次現今的微處理器可以有兩個或四個內核,將來可能會更多甚至個人并行機,采用更復雜的分層存儲結構,MATLAB可以利用多處理器計算機或網絡機群;最后是用戶團體中要求全面成熟解決方案的呼聲也越來越高[]CleveMoler.ParallelMATLAB:MultipleProcessorsandMultiCores,TheMathWorksNews&Notes。有三種途徑可以用MATLAB來創建一個并行計算系統。第一種途徑是主要是把MATLAB或相似程序翻譯為低層語言如C或FORTRAN,并用注解和其它機制從編譯器中生成并行代碼,如CONLAB和FALCON工程就是這樣。把MATLAB程序翻譯為低層C或FORTRAN語言是個比較困難的問題,實際上MathWorks公司的MATLAB編譯軟件就能轉換生成C代碼到生成包含MATLAB代碼和庫并支持各種語言特性的包裝器。第二種途徑是在并行機是MATLAB作為并行計算的一個“瀏覽器 _(browser)”而MATLAB本身并沒有什么改變且MATLAB環境本來就不是運行上并行機上。這種途徑不能真正算是“并行MATLAB”解決方案而僅僅是一個用來接入一個門戶啟動并行應用程序的WEB瀏覽器,在IntelHypercube和ArdentTitan超級計算機上最早的解決方案就是采用的這種方法。最近的MIT的MATLAB*p工程和現在一個商用工程Star-P再次使用這種方法。上面這兩種方法由于有限語言和庫支持,用戶必須丟棄他們已有MATLAB代碼或選擇通過簡化的系統提供的構造集來大量的重新實現,而在MathWorlks公司的最初調查中,已有MATLAB代碼的利用性被引為任何并行計算工具集的最重要的特性。第三種途徑是通過其它庫來擴展MATLAB或修改語言本身。MIT林肯國家實驗室的MatlabMPI和pMATLAB工程及Connell大學的MutiMATLAB工程(MathWorks公司也參與其中)是這種方法運用得最成功的并廣泛用于MATLAB并行計算庫,其它的還有ParaM和GAMMA工程、ParallelToolboxforMATLAB(采用PVM進行消息傳遞)和各種MPI工具箱MATLAB實現以及最近的Ohio超級計算中心的bcMPI(BlueCollarMPI)。為了滿足一套并行MATLAB工具的需要,MathWorls公司在2004年10月份引進并行計算工具箱(ParallelComputingToolbox)和MATLAB分布式計算服務器(DistributedComputingServer)(原來分別稱為DistributedComputingToolbox?andMATLABRDistributedComputingEngine?),屬于第三種實現途徑。剛開始將MATLAB計算能力擴展至并行計算時,主要是針對易并行計算問題(embarrassinglyparallelproblem),這些問題通常具有的共同特點是,每一個步驟可以計算獨立于所有其他的步驟,因此每一個步驟可以運行在一個單獨的處理器,以實現更快的結果。例如很多用戶要求在公司電腦上簡化運行蒙特卡羅(MonteCarlo)和參數掃描(parameterseep)模擬。因為一些高級用戶開始運用工具箱,因此必須結合其它語言特性,包括消息傳遞和對并行for循環、全局數組語義進行高度抽象。隱含多線程計算是在單核或多處理器機器上進行并行計算的另一種方法。公司的戰略目標是將傳統的MATLAB優勢擴展到機群環境,具有交互式功能、多平臺支持,接近數學表達式的語言來表達思想的能力而抽象出不相關的細節,因此工具集的設計目標是:l用戶在機群上可以執行任意的MATLAB代碼和Simulink仿真模型。l用戶可以用熟悉的MATLAB語言來編寫和執行所有的任務相關的MATLAB并行程序l用戶可以運用一流的語言結構來表達并行思想。他們無須對自己創建并行程序的編程模式作重大的改變,也不用擔心特定的體系結構或處理線程、數據管理和同步等問題。
l語言應該完全獨立于資源分配。同樣的程序可以在單個處理器或數百個處理器上正常運行,并且可以根據資源適當擴展伸縮,在機群某節點缺失情況下依然能正常運行。l可編程性將一直超越其它問題,用戶能夠創建正確的,易于閱讀、調試和維護的程序Connte-iofisMATLAS£DistributedCoServer--Connte-iofisMATLAS£DistributedCoServer--"andothe-rdu*MATl/6-Swith^erallelCamputinqToalbox'^Code/DataCode/Datatrarsfer2005年MathWorks公司發布到分布式計算工具箱(DistributedComputingToolbox)的第一個版本,提供管理多個獨立MATLAB作業的功能;2006年發布第二版,增加了MATLAB和MPI的綁定。MATLAB代表“MatrixLaboratory”的意思,于是稱一個MATLAB實例進程為“lab(orworker)”,并引入numlabs表示一個作業中開啟的labs的個數。從3.0版開始,增加了新的編程構造支持,使MATLAB不僅僅解決易并行計算問題(EmbarrassinglyParallelProblems)。2008年發布4.0版(R2008a)及2009年2月發布了4.1版(R2009a),下表是各個并行計算工具箱各版本特性改變,使用時注意兼容性影響。各版本特點及詳情可查看Mathworks公司網站的ParallelComputingToolbox?ReleaseNotes。
表3-1ParallelConipu.ttrLgTooIboxT:klReleaseNotes^'ersioid(Reteas.e)FeaturesandCbanigeswithYersiouCompatibility'ImpactLatestVersioiiV4.1(R2009a)Number□fL□calWorkzersIncreisedtoEightAdminCenterAllotsComroLLugofClu.sterUpgridePiiitleLCamputingPraduct&¥4.(KR2008b)spmdConstructChingedFunctionNamesforCodistributedj¥3.3(R200Sa)RenamedJmiGtiansforProductNameChartsChaikgedFunerionNamesfoiDisrributedAnfiadResomrceNowS改sProperriesAccordin^parforSyntaxHasSingleUsagedfevalNowDestroysItsJobWhenFinishedV3.2(R2007t)NewParalleLfor-L□ops(pirfor-Loops)CotiHguritioilsMailigerand.DialogsMDCEScriptforRedHatRemove-dV3.1(R2007a)Newp.modeInterfaceNewDefiulrSchedulerfoipmodeVecxorizeciTa.skCrea-tionJobsPropertyofJobManagerSonsJobsNewObjectDisplayFoimatrandSeedingUniqueforEichTaskorLabdarrayFunctionReplacesdistiibator?imctio:¥3.0(R20Q6b)MovedMDCEControlScriptsrant!SeedingUniqueforEachTaskorLab3.2Matlab并行計算工具箱及MDCE介紹3.2.1并行計算工具箱(ParallelComputingToolbox)并行計算工具箱(ParallelComputingToolbox)可以在多處理器計算環境中使用MATLAB和Simulink解決計算、數據密集型問題。使用工具箱可以解決通過裝配多個處理器包含幾個單獨工作單位或單個大型計算的問題。這些處理器可以駐留在一個多處理器計算機上,或者,當工具箱配合MATLAB分布式計算引擎(MATLABDistributedComputingEngine(Server),簡稱MDCE)時,駐留在計算機集群上。使用ParallelComputingToolbox開發并行應用程序。利用該工具箱,應用程序能夠在包含多達四個本地worker的桌面建立原型(4.1版R2009a可以多達八個本地worker),并且,通過MATLABDistributedComputingServer(MATLAB分布式計算服務器),可以擴展應用程序,將其應用到一個集群上的多臺計算機,如圖3-2所示。LDesktopSystem「ComputerCluster利用并行計算工具箱(ParallelComputingToolbox),可在多核和多處理器計算機上使用MATLAB和Simulink來解決計算問題和數據密集型問題。并行處理結構包括并行for循環和代碼塊、分布式數組、并行數值算法,以及消息傳遞函數等,并以較高的級別在MATLAB中執行任務及數據并行算法,而無需為特定的硬件和網絡架構編寫程序。這樣,將串行MATLAB應用程序轉換為并行MATLAB應用程序,便幾乎不需要修改代碼,且不需要使用低級語言編寫程序。此外,還可以在各種批處理環境中交互運行或脫機運行應用程序。該工具箱提供高級構造,如并行回路、并行算法、基于MPI的函數,以及用于作業和任務管理的低級構造。并行命令窗口為用戶提供熟悉的用于開發并行應用程序MATLAB交互式環境。也能夠在批處理環境中脫機執行分布式和并行應用程序。用戶可以使用工具箱在單個多核或多處理器桌面上執行應用程序。無需更改代碼,即可在計算機集群上運行同一個應用程序(使用MATLABDistributedComputingServer)。并行的MATLAB應用程序可以作為可執行程序或共享庫(用MATLABCompiler構建)分發,這些可執行程序或共享庫可以訪問MATLABDistributedComputingServer0主要功能l支持數據并行和任務并行的應用程序開發l可使用parfor(并行for循環)和spmd(單程序多數據)注釋代碼段,用于執行數據并行和任務并行的算法
l高級別的結構,如分布式數組、并行算法,以及消息傳遞函數,可在多個處理器上處理大型的數據集l可在一個多核桌面上本地運行四個worker(至R2009a,4.1版可達8個)l與MATLABDistributedComputingServer集成,可用于使用調度程序或任意數量worker的基于集群的應用程序l提供交互模式和批量執行模式在MATLAB中編寫并行應用程序ParallelComputingToolbox(并行計算工具箱)提供了多種高級編程結構,利用此工具箱,可對串行MATLAB代碼進行轉換,使之在數個worker(獨立于MATLAB客戶端運行的MATLAB計算引擎)上并行運行。這些worker既可在桌面上運行(工具箱在桌面上可本地運行多達四個worker),也可在集群上運行(使用MATLABDistributedComputingServer)。這樣的結構可降低在MATLAB客戶端與worker之間、以及各worker之間管理計算與數據的協調與分發的復雜性,從而簡化并行代碼開發。此外,可使用關鍵詞,例如parfor(并行for循環)和spmd(單程序多數據)語句來注釋MATLAB代碼,從而可以探究算法的各個區段所提供的任務和數據并行機制。MATLAB池(Pool)和并行命令窗口(pmode)支持交互執行,這樣,在設置耗時較長的運行或脫機任務前,可以先測試應用程序的某些區段。即使沒有worker,這些結構仍能夠運作,這樣,只需維護單個代碼版本,即可確保串行執行和并行執行。執行任務并行的算法通過將MonteCarlo仿真和其他粗粒度或密集并行問題組織為獨立的任務(工作單元),即可實現其并行化。工具箱中的并行for循環提供了一種在多個MATLABworker間分配任務的方式。使用該循環,可以將獨立的循環迭代自動分配給多個MATLABworker。parfor結構管理著MATLAB客戶端會話與worker之間的數據和代碼傳輸。它會自動檢測是否有worker,如果沒有,則會還原為串行方式。mathbpoo!opeukcal3%開啟3個本地workerparfcrl=1:1024%并行for循環A(i) =pi-1024);eudpLot(A)圖3-3并行如:循環示意此外,還可以將任務編寫為MATLAB函數或MATLAB腳本。如果指定為函數,可以通過在工具箱中處理任務和作業對象來執行任務;如果指定為腳本,則可以使用批處理功能。
diunI牛emyTvave.niparfor1=1:1024A①=矗如澈皿4鷺end%bichjobjob=batch('mywave':'niaiLabpool1=3)wait(job)loadflob,'A')plot(A)destroy^ab)圖3習批處理作業執行數據并行的算法對于需要大型數據集處理的MATLAB算法,ParallelComputingToolbox提供了分布式數組、并行函數,以及使用spmd關鍵詞注釋代碼區段的功能,可用于在數個worker上并行執行。這些并行結構可處理worker間通信,并協調后臺的并行計算。使用分布式數組,可以在參與并行計算的所有worker間分配任何數據類型的矩陣。利用并行函數,可以執行多種數學運算,例如索引、矩陣相乘、分解,以及在分布式數組上直接轉換。此外,工具箱還提供了150個多個用于分布式數組的函數,包括基于ScaLAPACK的線性代數例程。使用spmd語句和分布式數組編程。利用分布式數組和并行算法,僅需對代碼做最少的更改即可創建數據并行的MATLAB程序,且無需使用MPI編程。如要對并行方案進行顯式的、細粒度的控制,同時還需要明確管理worker間的協調,通過ParallelComputingToolbox函數可訪問基于MPI標準(MPICH2)的消息傳遞例程,包括用于發送、接收、廣播、阻擋、以及探測操作的函數。使用spmd結構,可以指定代碼的區段以在所有參與并行計算的worker間并行運行。程序執行過程中,該結構會自動將在其內部使用的數據和代碼傳輸給worker,并在執行完畢后將結果返回給MATLAB客戶端會話。分布式數組、并行函數以及消息傳遞函數可以在spmd結構內部使用。在沒有worker的情況下,MATLAB會串行執行spmd語句。在交互式并行環境中工作ParallelComputingToolbox(并行計算工具箱)擴展了MATLAB交互式環境,可以使用熟悉的MATLAB環境來建立原型、開發任務并行和數據并行應用程序。matlabpool命令可為分配一組專用的計算資源。它可將您的MATLAB會話連接至一個MATLABworker池,這些worker既可在桌面上本地運行,又可在計算機集群上運行。此外,它還可以建立一個交互式并行執行環境。在該環境中,用戶可以從 MATLAB命令提示符執行并行的MATLAB代碼,并且在計算結束后立即得到結果。在該環境中,并行的編程結構(例如parfor和spmd)會自動檢測是否有worker,并在MATLAB會話與worker之間分發計算和數據。并行命令窗口(pmode)是MATLAB命令窗口的擴展,可建立一個數據并行的執行環境,在該環境中,用戶可以使用分布式數組、關聯的并行函數,以及消息傳遞函數。在并行提示符下發出的命令會在所有參與的worker上同時執行,并立即返回結果,這樣,用戶便可以更好地在每個步驟追蹤應用程序在整個多處理器系統中的行為。此外,還可以將命令收集到MATLAB函數中,并將其提交用以脫機執行。在批處理環境中工作利用ParallelComputingToolbox(并行計算工具箱),用戶可以使用批處理環境來脫機執行程序,從而在執行大型MATLAB和Simulink應用程序時,自如地將MATLAB客戶端會話用于其他活動。等待應用程序執行并返回結果時,用戶也可以關閉MATLAB客戶端會話。利用批處理功能,可脫機執行MATLAB腳本。它提供了一種在MATLAB客戶端和worker工作區之間傳輸數據的機制,免除了在多個工作區分別管理數據的需要。利用ConfigurationsManager(配置管理器),可將程序執行導向使用四個本地worker的工作站,或使用任何scheduler和任意數量worker的集群。此外,該工具箱還提供了作業和任務對象。這些對象提供了一種較低級但更通用的機制,用以在批處理環境中執行并行MATLAB應用程序。批處理函數以及作業和任務對象都可用來減少執行串行MATLAB程序時,從桌面MATLAB會話向worker傳輸數據的負載。TOC\o"1-5"\h\zComnundWiM" ■回0FkEcftDebugDesktopWndowHelp ti?飛EotliHATLAEScriptsandMATLAEfunctionscan oiXlijie%-KJLTLAB*ScEipt*->>J 土片匚」f'i^urat-ion1f ;?%--Ot-h±rcomputacionswti11^-script.executesoif1ine?z■svd^anddDO^)j?k--Rsrelevauesulca; %ULTH電B?L-aad(Jr'S*r1 ;彳Oionl7a壬巳■rssulc3?I _ |阮g圖盡-5批處理工作"3.2.2分布式計算引擎(服務器)(MDCE/S)MATLABDistributedComputingServer可以使并行計算工具箱應用程序得到擴展,從而可以使用運行在任意數量計算機上的任意數量 的worker。MATLABDistributedComputingServer還支持交互式和批處理工作流。此外,使用ParallelComputingToolbox函數的MATLAB應用程序還可利用MATLABCompiler(MATLAB編譯器)編入獨立的可執行程序和共享軟件組件,以進行免費特許分發。這些可執行應用程序和共享庫可以連接至MATLABDistributedComputingServer的worker,并在計算機集群上執行MATLAB同時計算,加快大型作業執行速度,節省運行時間。MATLABDistributedComputingServer支持多個調度程序:MathWorks作業管理器(隨產品提供)或任何其他第三方調度程序,例如 PlatformLSF、MicrosoftWindowsComputeClusterServer(CCS)、AltairPBSPro,以及TORQUE。使用工具箱中的Configur
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農業職業經理人考試中的決策能力要求試題及答案
- 2025年證券從業資格證考試關注試題及答案
- 回顧2025年證券從業資格證考試試題及答案
- 銀行從業資格考試的市場格局試題及答案
- 火力發電廠施工中的安全生產費用預算與使用考核試卷
- 筆的筆身植物種植設計考核試卷
- 玻璃模具設計與應用考核試卷
- 2025年【工具鉗工(初級)】考試題及答案
- 2023年中國鋼研春季校園招聘開啟筆試參考題庫附帶答案詳解
- 牲畜屠宰業質量安全管理與提升策略考核試卷
- 期中模擬測試卷(試卷)-2023-2024學年一年級下冊數學人教版
- 民宿服務培訓課件
- 公路養護安全意識培訓
- 控制性詳細規劃城市用地分類和代號
- 鐵路專用線設計規范(試行)(TB 10638-2019)
- 主題一+鞋子擦洗自己做+第二課時(課件)-甘肅教育出版社勞動三年級+下冊
- ISO 45003-2021職業健康安全管理-工作中的心理健康安全-社會心理風險管理指南(中文版)
- 三年級語文 寫通知(全國一等獎)
- 2020電網技術改造工程概算定額第五冊調試工程
- 起重機機械金屬結構
- 自然教育課程的追尋與實踐
評論
0/150
提交評論