術語

2015-03-13 124 views
6

我想知道術語

1. labs 
2. workers 
3. cores 
4. processes 

之間的區別是,它只是語義或他們都不同?

回答

10

實驗室工人是MathWorks的術語傳遞更多信息,與他們的意思大致相同。

實驗室工人基本上是MATLAB的實例(不前端)。您可以運行它們中的幾個,並且可以在自己的機器上運行它們(僅需要並行計算工具箱),也可以在羣集上遠程運行它們(需要Distributed Computing Server)。當您執行並行代碼(例如parfor循環,spmd塊或parfeval命令)時,代碼由工作人員並行執行,而不是由主要的MATLAB執行。

並行計算工具箱在最近的版本中已經改變和發展了很多功能,並且改變和開發了它用來描述工作方式的術語。在某個時候,在運行spmd區塊時將它們稱爲實驗室很方便,但是在運行parfor循環時或者在處理作業和任務時可以將它們稱爲實驗室。我相信他們現在正在朝着總是稱其爲workers(儘管在命令labSendlabReceive,labBroadcastlabindexnumlabs)中存在傳統。

核心進程是不同的,並不是自己與MATLAB有任何關係。

A 核心是您的處理器的物理部分 - 您可能在臺式機中安裝了雙核或四核處理器,或者您可能有權訪問超過此類型的超大型計算機。通過擁有多個內核,您的處理器可以同時完成多項任務。

A 進程(大體上)是您的操作系統正在運行的程序。儘管OS同時運行多個程序,但它通常通過交錯每個進程的操作來實現。但是如果你有權訪問多核機器,那麼這些操作可以並行完成。

所以你通常想告訴MATLAB爲你的機器上的每個核心啓動一個worker。這些工作人員中的每一個都將作爲操作系統的一個進程運行,並且最終將每個核心並行運行一名工作人員。

以上是相當簡化,但我希望給出一個大致準確的圖片。


編輯:從答案評論移動線程的描述。

線程又有所不同了。線程本身也不是與MATLAB有關的。

讓我們回到過程一會兒。我之前沒有提到的一件事是,操作系統爲每個進程分配一個特定的內存塊,其他進程不應該觸及,所以他們很難彼此交互並且搞砸了。

A 線程就像一個進程內的進程 - 它是一個進程運行的操作流。通常,每個線程的操作都是交錯的,但是如果您有多個內核,它們也可以跨內核並行化。

但是,與進程不同,它們都共享一個內存塊,這是可以的,因爲它們全部由同一個程序管理,所以如果它們允許進行交互,它應該不太重要。

定期MATLAB自動使用多個線程並行許多內置的操作(如矩陣乘法,svdeig,線性代數等等) - 這是沒有你做任何事情,以及你是否有並行計算工具箱。

但是,MATLAB工作人員都是單線程運行,因此您可以完全控制如何進行並行化。

+0

我認爲你剛剛得到了這個位置 - 我只是在spmd塊的情況下將工人稱爲「實驗室」。儘管R2006a中引入了當時稱爲「並行工作」的術語,並且當時還沒有「spmd」塊 - 但直到R2008b纔出現。 – Edric 2015-03-13 17:06:22

+0

實驗室和線程是否是同義詞? – user2574723 2015-03-16 00:21:44

+0

有關線程的描述,請參閱編輯我的答案。 – 2015-03-16 13:13:28