电脑配置高,内核数多,可以设定参与Matlab运行的内核数,从而提高程序运行效率。下面主要介绍三种设定内核数的语法,函数parpool在较高版本可以使用。
一、语法
parpool(resources)
parpool(resources,poolsize); % 设置并行池数量
delete(gcp('nocreate')); % 完成计算,关闭并行池
二、三种类型
parpool('Processes',6);
parpool('local',6);
parpool('threads');
三、示例
runtimes = 1e9;
dummy1 = 0;
% 正常运行不添加parpool,不在群集上创建并行池
tic
for x= 1:runtimes
dummy1 = dummy1 + x;
dummy2 = 2 * x + 1;
end
toc
figure();
plot([1 2], [dummy1, dummy2]);
% 12核:Processes
parpool('Processes',12);
tic
parfor x= 1:runtimes
dummy1 = dummy1 + x;
dummy2 = 2 * x + 1;
end
toc
figure();
plot([1 2], [dummy1, dummy2]);
delete(gcp('nocreate')); % 完成计算,关闭并行池
% 12核:local
parpool('local',12);
tic
parfor x= 1:runtimes
dummy1 = dummy1 + x;
dummy2 = 2 * x + 1;
end
toc
figure();
plot([1 2], [dummy1, dummy2]);
delete(gcp('nocreate')); % 完成计算,关闭并行池
% threads,采用预设页的优选内核数
parpool('threads');
tic
parfor x= 1:runtimes
dummy1 = dummy1 + x;
dummy2 = 2 * x + 1;
end
toc
figure();
plot([1 2], [dummy1, dummy2]);
delete(gcp('nocreate')); % 完成计算,关闭并行池