gpt4 book ai didi

matlab - SPMD 与 Parfor

转载 作者:太空宇宙 更新时间:2023-11-03 19:32:28 26 4
gpt4 key购买 nike

我不熟悉 matlab 中的并行计算。我有一个创建分类器 (SVM) 的函数,我想用几个数据集测试它。我有一个 2 核工作站,所以我想并行运行测试。有人可以向我解释以下两者之间的区别:

 dataset_array={dataset1, dataset2}
matlabpool open 2
spmd
my_function(dataset(labindex));
end

 dataset_array={dataset1, dataset2}
matlabpool open 2
parfor i:1=2
my_function(dataset(i));
end

最佳答案

spmd 是一个并行区域,而 parfor 是一个并行 for 循环。不同之处在于,在 spmd 区域中,当涉及到可以并行执行的任务时,您具有更大的灵 active 。你可以写一个 for 循环,你可以对分布式数组和向量进行操作。您可以对整个工作流程进行编程,该工作流程通常由多个循环组成。这是有代价的:您需要了解更多有关在线程之间分配工作和数据的信息。例如,并行化循环需要在工作人员之间明确划分循环索引范围(您在代码中使用 labindex 进行了此操作),并可能创建分布式数组。

另一方面,parfor 仅执行此操作 - 并行化的 for 循环。自动并行化,您可以添加,因此工作由 MATLAB 在 worker 之间分配。

如果您只想并行运行一个循环,然后在您的本地客户端上处理结果,您应该使用 parfor。如果您想并行化整个 MATLAB 程序,您将不得不处理 spmd 和工作分配的复杂性。

关于matlab - SPMD 与 Parfor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12385534/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com