%% 请求并行内核的数量
p =parpool(6)
%% 由你的电脑的内核决定,一般8个内核,可以试试启动8个
parfor iteration = 1:5 %% 循环迭代五次,用于调整参数之类的循环迭代
%% 可以将整个需要修改的大程序直接放到里面去运行,效果非常显著,建议尝试
a(iteration) = 1;%%简化的例子,完全并行,因为parfor之间的进程没有数据调用和交换
end
如果遇到这种报错,说明你在运行完没有退出内核,用下面语句退出
delete(gcp('nocreate'))
关于parfor中的保存数据问题,因为无法使用save函数
所以写一个parsave函数进行调用保存相应的参数
function [] = parsave(iteration,theda_feedback,T_max,T_step,x_resource)
%save x,y in dir
% so I can save in parfor loop
%% 第一个是保存的数据名,我是将迭代次数转化为字符串,用以保存迭代过程中的以下四个参数
save(num2str(iteration),"theda_feedback","T_max","T_step","x_resource");
end
调用函数的地方
parsave(iteration,theda_feedback,T_max,T_step,x_resource);%% 把这段代码放到主函数循环里面就可以了
发现运行速度直接拉满加快了几十倍!!!!