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

看板MATLAB作者 (隱居處)時間7年前 (2017/10/03 20:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
要處理的問題跟我前一篇一樣 #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); 請問有辦法再產生亂數這一步加速嗎?還是我對平行運算的概念有問題? 感恩~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.114.253.46 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1507033926.A.70C.html
文章代碼(AID): #1PquD6SC (MATLAB)
文章代碼(AID): #1PquD6SC (MATLAB)