作者kanonehilber (隐居处)
看板MATLAB
标题[讨论] 平行化产生随机数
时间Tue Oct 3 20:32:01 2017
要处理的问题跟我前一篇一样
#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://webptt.com/cn.aspx?n=bbs/MATLAB/M.1507033926.A.70C.html