基本上,我有一個大對象,我想執行一些功能,這很適合並行處理。在這個例子中,我有一個大矩陣,我想計算列向量之間的所有成對內積。調整並行性能
請看下面的IPython Notebook。
我意識到@interactive
裝飾是沒有必要在這種情況下,我試圖消除@require
裝飾,但其影響可以忽略不計。
我的問題是:有什麼方法可以改善並聯機器的性能嗎?
我不知道map
方法的實現細節,我可以通過推動與視圖中的引擎並行執行的函數來避免開銷嗎?儘管如此,我無法想象它會隨每個參數一起發送。
將自變量列表自己分塊並編寫遠程使用的函數,該函數似乎也很愚蠢。
我試過四核心機器上的筆記本電腦,筆記本電腦的結果是兩個核心機器。
太棒了,謝謝你的時間和精力。我甚至沒有想到內存佈局可能會改變。 – Midnighter 2013-02-19 19:19:36
對於數組的零拷貝發送,IPython要求它們是連續的。爲此,IPython使用'ascontiguousarray',它實際上最終將F連續數組強制轉換爲C連續數組,儘管它可能不需要(它可能*有時*,取決於切片)。我將研究在F-contiguous數組的零拷貝發送中會涉及哪些內容以避免這種奇怪的情況。 – minrk 2013-02-19 20:43:54