[討論] 平行化產生隨機數

作者: kanonehilber (隱居處)   2017-10-03 20:32:01
要處理的問題跟我前一篇一樣 #1PopcxX_
不過目前想先用CPU做運算,我發現在某些時候即使沒有使用平行運算的指令,MATLAB也
會自動進行平行處理,比方說以那篇文章為例,for loop裡每一圈都產生一個隨機數,我
的處理器是Intel Pentium N3540 四核心,四個執行緒,如果這樣執行開工作管理員來看
cpu大約50%左右,但是如果是事先先建立一個很大的亂數陣列,for loop每次只是拿那個
亂數陣列的其中一列來做加法運算,這樣cpu就接近100%,但是這樣做總時間不變,我又
執行一個只有建立亂數矩陣的程式,發現cpu 3x%,所以這樣看起來雖然相加時達到100%
但是前面建立亂數又花費更多時間,總時間還是沒有省到
使用了parpool,再建立變數,用tic toc看建立變數那段也沒有比原本的快,還變慢了
clear all
parpool('local',4)
turns=40000;
ne=10000;
dn=0.001;
tic;
rn = (dn*randn(ne,turns));
t=toc;
t
poolobj = gcp('nocreate');
delete(poolobj);
請問有辦法再產生亂數這一步加速嗎?還是我對平行運算的概念有問題? 感恩~

Links booklink

Contact Us: admin [ a t ] ucptt.com