[問題] 為什麼我parfor比for慢已回收

看板MATLAB作者 (aa)時間15年前 (2010/06/05 03:52), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串1/1
我在用parfor處理簡單計算:找到矩陣中的正數,把它減掉5 最大的問題是,parfor比for慢幾十倍。有人知道為什麼嘛? 要怎麼發揮parfor的快速特性阿? result: parfor loop takes 0.1797sec for loop takes 0.0066276sec machine: Win7 64, 4core, 8G ram %% code u can test clc, close all clear all A=random('Normal',0,1,1,100000); B=A; par=tic; parfor idx=1:numel(A) if A(idx)>0 B(idx)=A(idx)-2; end end display(['parfor loop takes ',num2str(toc(par)),'sec']) A=random('Normal',0,1,1,100000); B=A; noPar=tic; for idx=1:numel(A) if A(idx)>0 B(idx)=A(idx)-5; % A(idx) end end display(['for loop takes ',num2str(toc(noPar)),'sec']) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 128.252.65.225

06/05 07:51, , 1F
有開 matlabpool 嗎?
06/05 07:51, 1F
之前沒,不過開了也一樣 我用: matlabpool close matlabpool local 2 or matlabpool open 都是for快超多

06/06 00:34, , 2F
可以用profile看一下 就會處理量小時用parfor反而浪費時間
06/06 00:34, 2F
我把radom 矩陣size增加到1 by 1e8,parfor反而更慢了.... 越大越慢 ※ 編輯: VVVVii 來自: 128.252.214.132 (06/08 03:47)
文章代碼(AID): #1C2Lbu41 (MATLAB)