【发布时间】:2017-01-07 19:43:48
【问题描述】:
我有一个 matlab 脚本(称为MyProcessing.m),它根据一些随机数进行一些计算。现在我有一个固定的种子来获得相同的随机数序列。我想并行运行此脚本多次,以利用系统上可用的多个内核。我希望每个新的“流程”都以不同的(但暂时固定的)种子开始。 Bellow 是现在的处理文件。
脚本中有一个 for 循环,但我不能使用 parfor,因为每次迭代都依赖于前一次。
MyProcessing.m
rng(1);
A = rand(5,5);
x =[];
y = []
% for loop
% that updates x and y when necessary
% end for
figure(1);
scatter(x, y);
savefig(filename);
我可以访问 MATLAB 中的并行计算工具箱,但我想不出我应该做什么。我相信我必须编写另一个脚本来调用具有不同随机种子的处理脚本,但我还希望并行运行不同的进程,以便我可以运行许多实验。
编辑:
我想要类似的东西
for i = 1:numberOfParallelProcesses
startANewRunOfTheScript();
end
for 循环在哪里启动进程,然后它不等待,而是继续启动下一个。
【问题讨论】:
-
parfeval?在脚本之前只喜欢函数。为简单起见,请务必避免共享数据。我不确定是否可以进行并行化,因为您有内部依赖关系,但是由于您将这些信息分类为无关紧要,我不能说。 -
每个
for循环迭代都依赖于上一次迭代。但是整个算法独立于在相同数据上运行相同算法的另一个脚本。你的建议可能会奏效。我将了解如何使用 parfeval。 -
或许这可以作为灵感:stackoverflow.com/questions/18204663/…
标签: matlab random parallel-processing matlabpool