1

全部,並行計算

我想使用Ilnumerics進行並行計算。它們完全脫鉤。我需要它爲 1)優化器隨機重啓(尤其是隨機優化器,如模擬退火):解決從不同點開始平行相同的優化問題: 例如:argmin_x f(x)從x0_h h = 1開始, 2,..,K 2)對一組未解耦數據運行相同的優化;作爲一個例子,考慮下面的無約束優化問題:給出函數f(R^dx R^p) - > R中R^d和p參數p中R^d的函數求解argmin_x f(x ,p_h),h = 1,2,...,K.

我希望符號足夠清楚。

是否可以並行運行此循環,每次執行一些涉及ILnumerics對象的lambda表達式並利用多核架構?

由於提前,像往常一樣,

GL

回答

1

這取決於:ILNumerics自動並行化的數學表達式等

C = A + B[":;2"]/0.4 * pinv(C) ... 

通過嘗試並行運行這樣的表達式的多個實例,使用多線程池中的線程,最終會由於太多的線程競爭CPU時隙而產生很多爭用。在結果中,你的算法可能會比沒有並行化的運行速度慢。

所以,在這種情況下,你可能會禁止內部自動並行ILNumerics透明地爲你做:

Settings.MaxNumberThreads = 1; 

表達式像一個以上將在一個線程中後得到評估。但是,現在您有責任在多個線程上分配計算任務。此外,你將不得不相應地鎖定你的數組 - 因爲ILNumerics通常不是線程安全的!這允許你同時寫入你的輸出陣列,但也帶來必須實現正確的鎖定方案burdon ...

+0

Haymo,非常感謝你。晶瑩剔透,像往常一樣。 GL –