前言
- matlab 作为一款强大的理工科科研神器,并行计算当然也是需要了解的,毕竟可以大大节省我们的时间。
- matlab 版本: 不同版本还是存在一些差异的!本文是针对于matlab2020a
parfor 相关
1、使用 parfor可以并行执行代码; 如下图红框所示,默认是选中的,也就是当使用parfor的时候,matlab会自动创建parallel pool;
2、注意:
- 不建议parfor内执行的内容包含有全局变量,尤其是会对全局变量进行修改的操作,否则会带来意想不到的错误。建议进行传参。
- 此外,parfor 并行执行的基础是for循环前后两次迭代是不相关的;也就是后一次的迭代不需要前一次的迭代结果;
- 并行执行是需要计算机CPU有多个核心为前提的,每一个核心可以单独进行一次for循环任务,各核心之间互不影响的工作;所以CPU核心数目越多,代码执行越快!!!
设置使用CPU核心数目
方法一:手动配置
使用matlab自带的窗口进行设置程序使用多少个核心;就在matlab左下角那里,点击一下进行配置即可!!
方法二:使用代码实现
% start parpool by codes.
delete(gcp('nocreate')); % stop the process before start a new run.
numCore = feature('numcores'); % get the maxmium core num of PC.
parpool(numCore-1); % start parpool.
注意:
① 上述代码中parpool(numCore-1);
是用于开启parpool并指定使用CPU核心数目的;
② delete(gcp('nocreate'));
:如果之前有开启过parpool但是没有关闭,直接使用parpool()
开启并行池会报错,所以需要先关闭;
③ numCore = feature('numcores');
:用于获取当前计算机CPU核心数目;
参考
https://www.it610.com/article/1275610528265289728.htm