[讨论] 平行化产生随机数

楼主: 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