开启并行计算,同时开启多个处理器进行代码运算,加速程序运行。
coreNum =8; %设置处理器数目
matlabpool(‘open’, ‘local’, coreNum); %开启并行计算
matlabpool close %关闭并行计算
需要注意的是2014之后版本不再使用matlabpool,二以parpool函数替代,其开启并行的方法类似:
方法1:
par = parpool(‘local’, coreNum); %开启并行计算
delete(par) %关闭并行计算
方法2:
parpool(‘local’, coreNum); %开启并行计算
delete(gcp(‘nocreate’)) %关闭并行计算
由于多个处理器同时运行内部循环程序,因此需要保证每个循环迭代之间不具有相关性,即互不影响。例:
parfor i=1:10
a(i) = a(i-1)^2;
…
end
上述实例的内部程序上一循环会影响下一循环结果,故无法使用parfor函数。
1)parfor函数无法像for函数一样进行嵌套;
2)通常放在循环程序最外面,但当内部某个子程序占程序运算量主体且内部程序的迭代无交叠时也可用于内部;
2)一般用在主函数中,用于类等无法加速运算。
n=10^9;
H=zeros(n,1);
par=parpool(‘local’, 6);
parfor i=1:n
H(i)=i;
end
delete(par)