我有一個關於sum
的問題,在matlab中。Matlab在多維數組上的求和性能
對於載體(1×N個矩陣),sum
似乎是並行化。例如,
a=rand(1,100000000);
maxNumCompThreads(2);
tic;for ii=1:20;b=sum(a,2);end;toc
maxNumCompThreads(1);
tic;for ii=1:20;b=sum(a,2);end;toc
> Elapsed time is 1.219342 seconds.
> Elapsed time is 2.393047 seconds.
但如果不是我考慮一個2×N個矩陣,
a=rand(2,100000000);
maxNumCompThreads(2);
tic;for ii=1:20;b=sum(a,2);end;toc
maxNumCompThreads(1);
tic;for ii=1:20;b=sum(a,2);end;toc
> Elapsed time is 7.614303 seconds.
> Elapsed time is 7.432590 seconds.
在這種情況下,sum
似乎並沒有從額外的核心受益。
以前有人遇到過這個嗎?我想知道這是否可能是由於索引開銷,以及在2xN矩陣的情況下是否有可能使sum
更快。
非常感謝。
我看不到這種行爲(matlab 2012a)。 1D陣列的比率爲2線程vs單線程提高〜10%。我得到2D陣列的第一個循環(2個線程)也比第二個(單線程)稍快(2%)。雖然它不如一維陣列有效,但它不是你所報告的。 – bla
@natan感謝您的評論。我使用matlab 2011b和2013a在幾臺機器(2和4個內核)上檢查了這一點,我總是觀察這種行爲。 – user2578309