借助并行MATLAB應用程序提升科學計算效率
隨著諸如金融分析、地震預報、醫(yī)學影像、流體模擬等應用對科學計算的要求變得更加復雜,工程師和科學家必須使用大量的數據集來解決日益增長的計算強度問題。多數情況下,不是客戶的計算機處理不了這樣的難題,就是必須花幾天甚至數周的時間運行才能得到結果。
另一方面,傳統(tǒng)HPC用戶也正在尋找更好、更簡單的編程工具,以便能創(chuàng)造性地解決問題。否則,他們就不得不在低級語言環(huán)境中開發(fā)并行應用(例如C、FORTRAN);或者,即便采用了諸如MATLAB(r)這樣的高級語言,他們也仍然要依靠程序員用C或FORTRAN來重新編寫這些應用 。顯然,這些工作成本高又費時,而且還容易出錯。
為了更好地解決上述問題,The MathWorks公司曾在2008年5月宣布,將其并行計算工具箱(Parallel Computing Toolbox)并行計算功能整合到MATLAB Optimization Toolbox和遺傳算法和直接搜索工具箱(Genetic Algorithm and Direct Search Toolbox)等優(yōu)化求解器之中,讓用戶無需代碼修改,即可創(chuàng)建密集型計算MATLAB應用的并行版本。
“簡便性、靈活性、和易于部署始終是并行MATLAB最為看中和關注的。”該公司MATLAB產品市場總監(jiān)Lisa Kempler日前在北京為其新版并行計算工具箱進行推廣時做出了此番表態(tài)。“正版用戶只要使用并行計算工具箱開發(fā)應用程序并通過MATLAB Compiler發(fā)布,便無需繳納版稅。”
她強調說,MATLAB并行計算工具箱能夠為客戶提供多種高級編程結構,包括parfor(并行for循環(huán))和spmd(單程序多數據)語句、分布式數組、并行數值算法、以及消息傳遞函數等。用戶可利用此工具箱對串行MATLAB代碼進行轉換,使之在數個worker(獨立于MATLAB客戶端運行的MATLAB計算引擎)上并行運行。
例如,parfor功能就提供了一種在多個MATLAB worker間分配任務的方式,用戶可以在MATLAB腳本和函數中使用該循環(huán),并以交互或脫機的方式執(zhí)行;如果使用spmd結構,指定代碼的區(qū)段就可以在所有參與并行計算的worker間并行運行。程序執(zhí)行過程中,該結構會自動將在其內部使用的數據和代碼傳輸給worker,并在執(zhí)行完畢后將結果返回給MATLAB客戶端。
而使用分布式數組和支持分布式數組的并行函數的好處則在于,用戶不但可以在參與并行計算的所有worker間分配任何數據類型的矩陣,還能夠執(zhí)行多種數學運算,例如索引、矩陣相乘、分解,以及在分布式數組上直接轉換。此外,該工具箱還提供了作業(yè)和任務對象,用以在批處理環(huán)境中執(zhí)行并行 MATLAB 應用程序。
盡管通過MATLAB并行工具箱,使用者已經可以在一臺使用一個工具箱許可證的計算機上使用四個本地worker。但Lisa認為,如果能與MATLAB 分布式計算服務器集成使用,應用程序還可得到擴展,從而可以使用運行在任意數量計算機上的任意數量的worker。“這就意味著,其它領域內不直接使用MATLAB的專業(yè)人士,也能從并行MATLAB性能中獲益。”
她進一步解釋說,MATLAB 分布式計算服務器會在應用程序運行時在基于用戶配置文件的集群上動態(tài)啟用所需的許可證。這樣,管理員便只需在集群上管理一個服務器許可證,而無需針對每位集群用戶在集群上管理單獨的工具箱和模塊集許可證。
MATLAB并行計算工具箱 4.0新版本使用了用戶熟悉的MATLAB環(huán)境來建立原型、開發(fā)任務并行和數據并行應用程序。以Matlabpool命令為例,它可為用戶分配一組專用的計算資源,并將MATLAB會話連接至一個MATLAB worker池。同時,它還可以建立一個交互式并行執(zhí)行環(huán)境。在該環(huán)境中,使用者可以從MATLAB命令提示符執(zhí)行并行的MATLAB代碼,并且在計算結束后立即得到結果。相信該工具箱的推出,會讓更多的科學家和工程師更高效地利用計算資源和解決大數據量并行計算問題,從而加速自身科研工作的進展。
F1 使用The MathWorks公司并行計算工具箱開發(fā)并行應用程序