qua*_*ant 7 parallel-processing matlab
你认为这是一个简单的问题,但我找不到解决方案.采取以下循环:
A = zeros(1,10000000);
parfor i = 1:length(A)
A(i) = i;
end
Run Code Online (Sandbox Code Playgroud)
这只能在我的计算机上的一个核心上运行,尽管它很容易并行(或者至少它应该是).我正在使用Matlab 2012b,我已经尝试寻找有关如何创建并行循环但无法找到任何内容的文档(matlab文档只显示如何创建这些循环的示例,而不是如何实际并行运行它们).
我已经尝试查找如何修改并行计算工具箱设置,但它们都不起作用,因为它们全部用于Matlab 2013(我使用的是2012b).如果有人能提供一个实际并行运行的简单,可并行的循环的例子,我将非常感激!
注意:我已经检查并安装了并行计算工具箱,虽然我无法知道它是否已启用,或者如何启用它,因为文档似乎没有为我的版本提供答案(我输入preferences进入命令提示符但没有看到它).
编辑:我通过这样做得到它:
matlabpool('open',4);
A = zeros(1,10000000);
parfor i = 1:length(A)
A(i) = i;
end
matlabpool('close');
Run Code Online (Sandbox Code Playgroud)
...但我真的不知道为什么会这样,我是否每次都关闭游泳池,游泳池实际上是什么(我已经阅读了文档,仍然没有得到它),以及matlabpool与parpool...的区别. .
正如我在评论中所说,您需要启动 MATLAB 工作线程:
matlabpool open N
Run Code Online (Sandbox Code Playgroud)
该parpool命令替换了R2013b版本中的matlabpool命令。该命令创建许多本地工作线程(假设您的默认集群是local配置文件),它们只是在没有 GUI 的情况下运行的 MATLAB.exe 进程,它们执行部分并行代码,例如循环parfor。