您如何并行化 MATLAB 代码以更快地打印所有可能的三元组?
How do you parallelize MATLAB code to print all possible 3-tuples more quickly?
如何并行化下面的串行 MATLAB 代码?您可以假设以不同顺序打印 3 元组没问题,只要打印所有可能的排列即可。
for dt=1e-10:1e-10:1e-9
for dx=1e-7:1e-7:1e-6
for dy=1e-7:1e-7:1e-6
disp(dx)
disp(dy)
disp(dt)
end
end
end
给你:
dt=1e-10:1e-10:1e-9;
dx=1e-7:1e-7:1e-6;
dy=1e-7:1e-7:1e-6;
[a1, a2, a3]=meshgrid(dx,dy,dt);
answer=[a1(:) a2(:) a3(:)]
我不确定你所说的“打印”到底是什么意思,上面的代码是你的 for 循环的矢量化版本,其中 answer
中的每一行都是 3 dx,dy,dt嵌套循环会吐出每次迭代。
另一个答案是正确答案。但是,如果您真的出于某种原因想要并行化打印:
numberOfThreads = 4
parpool(numberOfThreads)
parfor dt=1e-10:1e-10:1e-9
for dx=1e-7:1e-7:1e-6
for dy=1e-7:1e-7:1e-6
disp(dx)
disp(dy)
disp(dt)
end
end
end
如何并行化下面的串行 MATLAB 代码?您可以假设以不同顺序打印 3 元组没问题,只要打印所有可能的排列即可。
for dt=1e-10:1e-10:1e-9
for dx=1e-7:1e-7:1e-6
for dy=1e-7:1e-7:1e-6
disp(dx)
disp(dy)
disp(dt)
end
end
end
给你:
dt=1e-10:1e-10:1e-9;
dx=1e-7:1e-7:1e-6;
dy=1e-7:1e-7:1e-6;
[a1, a2, a3]=meshgrid(dx,dy,dt);
answer=[a1(:) a2(:) a3(:)]
我不确定你所说的“打印”到底是什么意思,上面的代码是你的 for 循环的矢量化版本,其中 answer
中的每一行都是 3 dx,dy,dt嵌套循环会吐出每次迭代。
另一个答案是正确答案。但是,如果您真的出于某种原因想要并行化打印:
numberOfThreads = 4
parpool(numberOfThreads)
parfor dt=1e-10:1e-10:1e-9
for dx=1e-7:1e-7:1e-6
for dy=1e-7:1e-7:1e-6
disp(dx)
disp(dy)
disp(dt)
end
end
end