2011-10-01 108 views
0

我有一臺四核計算機;我使用並行計算工具箱。 我設置在並行計算設定了「工人」號不同的號碼,例如2,4,8 .............. 然而,不管我設置,CPU的平均MATLAB的使用率恰好是總CPU使用率的25%沒有核心運行在100%(全部在10%-30%左右)。我使用MATLAB來運行優化問題,所以我非常希望我的四核計算機能夠利用它的所有功能來執行計算。請幫助MATLAB並行計算設置

回答

1

(在四核最多4個)設置了許多工人是不夠的。您還需要使用像parfor這樣的命令向Matlab發信號通知計算的哪部分應該分配給工作人員。

我很好奇你正在運行什麼樣的優化。通常,優化問題很難並行化,因爲每次迭代的結果都取決於前一個問題。但是,如果你想要例如嘗試將多個模型擬合到數據中,或者如果您必須適合多個數據集,那麼您可以輕鬆並行地運行這些模型,而不是按順序運行這些模型。

注意,有許多在覈心資源方面可能是不夠的 - 如果一個工人進行優化使用的K GB內存,n個工人執行它需要至少n * K GB的RAM。

+0

我正在使用全局優化工具箱。我已經使用並行計算設置了全局優化工具箱。基本上,全局優化工具箱將使用許多初始起點;每個起點可以被認爲是一個新的計算。這就是爲什麼它可以利用並行計算。但是,它不適用於我的電腦。請幫助 – Marco

+1

@Marco:只是爲了確保我們在同一頁上:你沒通過調用'matlabpool打開4'創建四個工人(和你檢查,你確實看到在任務管理器4個Matlab的會話)。然後,你將你的multistart問題初始化爲ms = MultiStart('UseParallel','always');'。正確? – Jonas

+1

@Marco:由於測試:你比較一下運行了一個工人之間的問題只與四名工人正在運行的問題時(即'抽動,運行(MS,問題,200); toc'兩種情況) ?你看到有什麼不同嗎?如果是的話,那麼它可以在你的計算機上運行,​​但這個問題可能太微不足道讓處理器流汗了。另外,如果您的處理器上有超線程,即使它們實際使用了100%的資源,它們也會顯示50%的使用率。 – Jonas