你会认为这将是一个简单的问题,但我找不到解决方案。采取以下循环:
A = zeros(1,10000000);
parfor i = 1:length(A)
A(i) = i;
end
这仅在我的计算机上的单个内核上运行,尽管它很容易并行化(或者至少应该是并行化的)。我正在使用 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');
...但我真的不知道为什么会这样,我是否每次都关闭池,池实际上是什么(我已经阅读了文档,仍然不明白),以及matlabpool
与parpool
.. .