Mathematica 的并行計算
在 80 年代,我參加了一個科學(xué)演講,是關(guān)于一種相當(dāng)麻煩的方法來并行化當(dāng)時存在的一個符號計算系統(tǒng),我很快意識到我可以更優(yōu)雅地為 Mathematica 帶來并行性,這要歸功于它的符號通信協(xié)議 MathLink。這個協(xié)議讓我不僅可以在同時運(yùn)行的 Mathematica 內(nèi)核之間交換數(shù)據(jù),還可以交換程序。
結(jié)果是一個完全用Mathematica編寫的包,稱為 Parallel Computing Toolkit (https://wolfr.am/10mMRZwRh)。當(dāng)時,并行計算意味著昂貴的大型機(jī)器、FORTRAN 和批處理作業(yè),在交互式的 Mathematica 筆記本上實驗不同的并行模式是相當(dāng)令人滿意的,在本地網(wǎng)絡(luò)上的多臺機(jī)器進(jìn)行計算, 能夠并行地進(jìn)行函數(shù)編程,并并行地使用符號表達(dá)式和任意精度的算法。很多人對此表示很驚訝,他們認(rèn)為并行化是一件非常復(fù)雜的事情,需要超級計算機(jī)和大量資金,以及相當(dāng)大的問題,才值得。事實是,人們解決的大多數(shù)問題都很容易并行化。
與此同時,并行計算機(jī)的格局已經(jīng)穩(wěn)定并演變?yōu)槿N架構(gòu):多核機(jī)器、托管集群和 PC 的自組織網(wǎng)絡(luò)。Mathematica 在所有這些方面的工作方式都相同,但查找資源和啟動流程的方式卻大不相同;Mathematica 非常適合與現(xiàn)有環(huán)境交互,并且通過一些額外的 Java 代碼,現(xiàn)在可以直接在所有三種架構(gòu)中使用。
為了應(yīng)對多核機(jī)器的廣泛可用性,Wolfram Research 決定在 Mathematica 的每個軟件中包含我的 Parallel Computing Toolkit 的功能。此時(對于第 7 版)我們還徹底修改了并行命令的設(shè)計。
因此,Mathematica 現(xiàn)在知道它運(yùn)行的計算機(jī)的處理器內(nèi)核數(shù)量,并在需要時自動使用它們。
只要您使用其中一個并行命令(例如并行計算表的元素),Mathematica 就會在每個內(nèi)核上啟動一個額外的內(nèi)核并分配工作。為了讓自己相信計算確實發(fā)生在這些額外的內(nèi)核上,我們可以要求一個計算來告訴我們每個元素的計算位置。
每個正在運(yùn)行的內(nèi)核都有一個唯一的 ID 值,可以幫助調(diào)度更復(fù)雜的分布式算法。
本周 (2009/3/18) 發(fā)布的 gridMathematica Server (https://wolfr.am/10mM353BQ) 是邁向無障礙并行計算的又一重要步驟。在早期,人們必須收集網(wǎng)絡(luò)中所有可用機(jī)器的主機(jī)名,并使用遠(yuǎn)程登錄技術(shù)在這些機(jī)器上啟動 Mathematica。如今,您網(wǎng)絡(luò)上的 gridMathematica 安裝將自我宣傳,就像您的打印機(jī)、多媒體播放器和其他共享資源一樣。
可用的機(jī)器將顯示在控制面板中,您只需選擇要使用的機(jī)器即可。在這里,我的小網(wǎng)絡(luò)由兩臺雙核機(jī)器組成,其中一臺可用。
現(xiàn)在,我總共有六個內(nèi)核可用。
Mathematica 也是分析并行計算性能的最佳工具。在這里,我們測量了兩個遠(yuǎn)程內(nèi)核的基本延遲。延遲只是簡單計算的往返時間。
并非所有計算都受益于并行化。例如,內(nèi)核計算 Sin[1.0] 所花費(fèi)的時間比將這個命令發(fā)送到另一個內(nèi)核并接收結(jié)果所花費(fèi)的時間要少。
新的并行狀態(tài)窗口使用動態(tài)更新來顯示每次并行計算后的基本性能數(shù)據(jù)。它可以讓您一目了然地看到調(diào)度對不均勻問題的影響。在第一次運(yùn)行中,我們將一系列素性測試單獨安排到兩個可用的內(nèi)核上。從狀態(tài)窗口的快照可以看出,這兩個內(nèi)核都執(zhí)行了相當(dāng)一部分工作。
現(xiàn)在我們預(yù)先在每個內(nèi)核上安排一半的測試。其中一個不走運(yùn),得到了所有困難的情況(素性測試的時間變化很大),因此,另一個內(nèi)核基本上處于空閑狀態(tài)——這在并行計算中不是您想要的。
您還可以看到,在執(zhí)行所有調(diào)度和通信的主內(nèi)核中花費(fèi)的時間在第一種情況下要高一些;這是您為更精細(xì)的調(diào)度付出的代價,在這種情況下非常值得(但并非總是如此)。
Mathematica 適用于多核桌面 PC, gridMathematica Server 適用于網(wǎng)絡(luò)上的所有其他計算機(jī),為并行計算提供了一個易于使用、功能強(qiáng)大的交互式系統(tǒng)。 在第一次考慮 Mathematica 中的并行性將近 20 年后,我的早期開發(fā)現(xiàn)在已成為 Mathematica 的標(biāo)準(zhǔn)部分,這是一個越來越全面的系統(tǒng),可以在任何可用的計算機(jī)上進(jìn)行計算。
工程師必備
- 項目客服
- 培訓(xùn)客服
- 平臺客服
TOP




















