Matlab 并行处理需要特别处理

  最近用到matlab做测试和数据处理,想到是否可以多线程处理问题,于是测试了一matlab的并行处理效果。

  测试环境,联想E480 , 8250U,4核8线程@1.6G~3.4G,内存8G@DDR24000,256G SSD,winddows 10, matlab 2014a .

  借用一个大家做过的测试程序:

tic
for i=1:10000
    for j=1:10000
        a(i,j)=i*j;
    end
end
toc

  这个消耗间大概600S;

 修改为并行4核效果有明显提高,需要大概60S;

matlabpool local 4; 
%parallel program 

tic
parfor i=1:10000
    for j=1:10000
        x(i,j)=i*j;
    end
end
toc
matlabpool close 

  再做了一点修改,在执行计算前,增加了内存空间预分配处理:

x=zeros(10000);
tic
for i=1:10000
    for j=1:10000
        x(i,j)=i*j;
    end
end
toc

    这个计算只需要大概5S打开资源管理观察CPU计算过程中的工作状况,发现8个core都在参与运算。

    通过这个测试发现,我们不需要考虑是否多核分配,系统已经处理得很好了。内存分配较耗费时间,我们优化好比较花时间的这部分code就可以了。

你可能感兴趣的:(Matlab 并行处理需要特别处理)