Matlab CPU多核并行计算

在使用Matlab编写程序的时候,时间的消耗大部分是因为循环的进行。有些时候程序的运行只能借助借助CPU中的一个核,而CPU通常是多核的,可以借助多个核一起运行程序,加快运行的速度。

Matlab开启多核并行处理

Matlab开启多核并行处理的方法比较简单,仅仅是需要将“for”修改为“parfor”。
最新几版的Matlab都是将并行处理的工具包 parallel pool自动打开,不需要再去格外开启。
例如使用同一个CPU,在使用一个核运算下边的程序的时候,

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

总的运算时间为:544.797089 s
当开启多核运算的时候,

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

使用多核并行处理的时候,运行时间为:7.272970s。速度提升了接近75倍,这个足以看出使用并行计算时的优势。

matlabpool local 2;  
    %parallel program  
matlabpool close  

也可以在程序中设定开启CPU核的个数,合理分配CPU工作区间。

注意

“for”循环使用的按照运算顺序,一次一次来迭代循环。而“parfor”使用的是多核同时处理,根据你的CPU核的个数来同时开始,并且不是安装一定的顺序来进行计算的,但两者的计算结果是一样的。
但是并不是所有的“for”循环都可能使用“parfor”来进行并行处理,中间不能有共同的变量,例如每一次循环中都使用同一个变量,但是它在并行处理时只能出现一次,这种情况下Matlab就会报警,不能使用“parfor”并行处理机制。

你可能感兴趣的:(Matlab)