首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这个简单的并行Matlab程序比非并行版本慢得多?

为什么这个简单的并行Matlab程序比非并行版本慢得多?
EN

Stack Overflow用户
提问于 2014-02-04 11:18:58
回答 1查看 218关注 0票数 1

我有一个非常简单的脚本,它调用内置的遗传算法函数:

代码语言:javascript
复制
function test1(gen)
    options = gaoptimset('UseParallel', 'always', 'Vectorized', 'off');
    tic;
    x = ga(@dejong5fcn, 2, [], [], [], [], [], [], [], options);
    toc
end

首先,我在没有启动matlabpool的情况下运行test1。正如预期的那样,它运行良好,但与Windows资源监视器观察到的一样,它只使用了一个CPU核心。运行20020次健康评估需要4.2秒。然后,我用"start matlabpool local 4“启动了并行引擎,然后执行了一次相同的test1运行。它运行并使用所有四个CPU核心,但执行20020次健康评估大约需要90.7秒。

我对Matlab R2012a (在Windows764位上)中的并行性有什么不理解的地方?谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2014-02-04 22:46:56

当您并行化一个算法时,在几个并行操作之间进行通信以及在它们之间来回传递数据时会产生开销。在这种情况下,您有相当多的相当小的操作,并且开销淹没了并行化带来的任何加速。

尝试将较少数量的较大操作并行化,您将看到更好的加速比。

顺便说一句,这就是UseParallel选项在默认情况下没有打开的原因。当您将其设置为true时,您将告诉并行计算工具箱,您知道问题将从并行化中受益(并不是所有问题都会受益),并且您正在授予它并行化算法的权限。

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

https://stackoverflow.com/questions/21542337

复制
相关文章

相似问题

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