天天看點

matlab并行和串行差別,Matlab并行計算中幾個變量類型的差別

在用pmode來說明這幾個矩陣類型的差別

Replicated Arrays

在pmode中輸入 x=1:4 可以看出在4個labs中均出現了

x=1 2

3 4的字樣,說明x在4個labs中均存在,而且值是一樣的,像這種情況下的x就稱為Replicated

Arrays。

Distributed Arrays(分布式矩陣)

按着上一次的輸入,再在pmode中輸入

x1=distributed(x,'convert')

,可以看到在各個lab中顯示的是 localPart(x1) =...

,這說明了x1并不是一個在各個lab中均存在的矩陣,其實各個lab中存有的隻是x的一部分,整個矩陣x1是由4個lab中的值所組成的。此時雖然x1的分布于4個lab中,但是不能也不必用gcat來擷取x全部的值,因為x本身就是一個完整1:4的矩陣。在用gcat時很容易将Distributed

Arrays和Variant Arrays搞混,下面我們來看一下Variant

Arrays。若要得到一個分布式矩陣的完整形式,可以用gather函數來得到,而不用轉換。

Variant Arrays

上面各個lab中存在的隻是矩陣x1的一部分,在各個lab中并不是一個變量,如何将lab中x1的值變成lab本身的變量呢?這就要用到函數localPart了,在pmode中輸入

x2=localPart(x1),此時可以在各個lab中顯示x2=...

,此時x2分布于各個lab中,但是值卻不一樣,這樣的矩陣我們就稱為Variant

Arrays。此時在pmode中輸入 x3=gcat(x2) 可以得到x3=1 2 3

4,這樣就将各個lab中的值彙集到一起了。

Private Arrays

Private Arrays和Variant Arrays差不多,隻是Private

Arrays在有此lab中不存在同名的變量

From: