首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SPMD与Parfor

SPMD与Parfor
EN

Stack Overflow用户
提问于 2012-09-12 17:53:03
回答 1查看 13.1K关注 0票数 7

我对matlab中的并行计算是个新手。我有一个创建分类器(SVM)的函数,我想用几个数据集来测试它。我有一个双核工作站,所以我想并行运行测试。有没有人能给我解释一下:

代码语言:javascript
复制
 dataset_array={dataset1, dataset2}
 matlabpool open 2
 spmd
      my_function(dataset(labindex));
 end

代码语言:javascript
复制
 dataset_array={dataset1, dataset2}
 matlabpool open 2
 parfor i:1=2
      my_function(dataset(i));
 end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-12 22:03:40

spmd是一个并行区域,而parfor是一个并行for循环。不同之处在于,在spmd区域中,当涉及到可以并行执行的任务时,您拥有更大的灵活性。你可以写一个for循环,你可以对分布式数组和向量进行操作。您可以对整个工作流进行编程,它通常由多个循环组成。这是有代价的:您需要更多地了解如何在线程之间分发工作和数据。例如,将循环并行化需要显式地在工作者之间划分循环索引范围(您在代码中使用labindex做到了这一点),并且可能还需要创建分布式数组。

另一方面,parfor只做这件事--一个并行的for循环。自动并行化,你可以添加,所以工作是由MATLAB在工人之间分配的。

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

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12385534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档