2015-08-27 72 views
0

嗨我正在使用matlab並行計算工具箱來執行並行計算。我的筆記本電腦是2核心4線程,所以我假設任務可以連接到4個作品?但是,當我輸入命令「matlabpool open」時,只有2名工人被連接。誰能告訴我如何指定要連工人的確切人數,這樣我就可以分配任務的工人比內核的數量,使計算更有效的數量越多?謝謝!Matlab並行計算工具箱僅爲一個內核分配1個工作人員嗎?

+2

你可以* *使用每個物理核心的多個工作,但你可能會看到很少或幾乎沒有影響。見[這裏](http://www.mathworks.com/products/matlab/choosing_hardware。html#_Hardware_Considerations)和[here](更多信息請參見http://www.mathworks.com/matlabcentral/answers/80129-definitive-answer-for-hyperthreading-and-the-parallel-computing-toolbox-pct)。 – horchler

+3

[Matlab:多線程與多核之間的區別]以及[線程vs核心的Matlabpool數量]的可能重複(http://stackoverflow.com/questions/10459354/matlab-difference-between-multithreading-and-multicore)( http://stackoverflow.com/questions/14468886/matlabpool-number-of-threads-vs-core)。 – horchler

+0

@horchler我認爲最大數量甚至可能取決於版本。我曾經遇到過4次的限制,這就是爲什麼我認爲這與內核數量有關。 R2012b最多有12個本地池,[R2014a允許更多](http://stackoverflow.com/questions/25476287/maximum-number-of-workers-in-a-parallel-loop-local-cluster-with -matlab-r2014a) –

回答

3

您可以告訴matlab使用特定數量的工人,但它不會讓您使用超過最大數量,這可能是 物理內核的數量 版本和羣集相關。 R2012b允許在本地羣集中使用12名工作人員,即R2014a allows more than 12

help matlabpool

...

matlabpool [poolSize]

...

matlabpoolmatlabpool OPEN使用與指定的池大小默認 羣集配置文件啓動一個工作池通過該配置文件。您 還可以指定使用matlabpool OPEN <poolSize>池的大小,但要注意 多數集羣具有的,他們可以啓動進程的最大數量。

% Start a worker pool using the local profile with 2 workers:
matlabpool local 2

更新:

我打了一下週圍。在R2012b上詢問16名工人給我的錯誤

您請求最少16名工作人員,但本地羣集只允許12名工人。

這意味着這個版本不可能有更多的工人。但是,如果我叫與12名工人在當地游泳池,我得到的錯誤

您申請最低12名工人,但集羣「本地」有NumWorkers屬性設置爲允許最多4名工人。上運行更多的工人比這個(最多可爲本地羣集最多12個)一個 溝通工作,提高NumWorkers屬性爲 集羣的價值。本地羣集的NumWorkers默認值是本地機器上的核心數量。

因此,根據您的版本,您可能無法使用超過12名工作人員。如果你看到後者錯誤,你可以重新定義你的集羣,讓更多的內核。複製local池:

mycluster=parcluster('local'); 
mycluster.NumWorkers=48; 
matlabpool(mycluster,48); 
... 
matlabpool close; 
+0

謝謝安德拉斯!我可以再問一個問題:我使用的服務器似乎有4個處理器,每個處理器有12個內核。所以應該有48名員工進行並行計算。但是當我啓動matlabpool時,只有12名工作人員被連接。是否可以將任務分配給所有4個處理器,以便48名員工可以同時工作?謝謝! – Ruby

+0

我在@horchler的評論之後編輯了我的問題,指出核心數量不是最大值。我懷疑,如果matlab不允許你手動使用超過12個內核(錯誤告訴你最大爲12),那麼你可以做的不多。 –

相關問題