parfor的并行代码比for的串行版慢

时间:2016-07-29 18:02:22

标签: matlab parallel-processing genetic-algorithm

我已经用matlab编写了一个代码,并且我使用了并行计算工具箱 关于我的代码的更多描述: 我正在尝试用matlab和并行计算工具箱实现并行遗传算法。

我已经实现了,但我遇到了问题。这是我用parfor的并行代码比用于for的串行代码要慢得多。

我的代码:

tic

for j=1:maxIteration
    parfor i=1:numIslands
        if migrationInterval
            doMigration;
        end
        doCrossover;
        doMutation;
        newSpring;
    end 
end
toc

numIslands总是小数字(5到12) maxiteration总是很大(1500到5000) 请帮我 谢谢

2 个答案:

答案 0 :(得分:0)

我建议你使用"运行和时间"来运行你的功能。工具。如果原因在parfor-procedure或您的函数中,结果将显示。 可能是parfor程序是不必要的并且没有任何优势,但它总是取决于你运行的功能。

答案 1 :(得分:0)

您提到您的CPU有两个核心。一个问题可能是代码本身,它看起来好像是在调用脚本而不是函数,所以你可能会不必要地淹没你的工作区。此外,如果这些脚本中的任何一个在运行时声明变量,您可能会堵塞RAM(Matlab特别擅长),从而使您的代码运行速度变慢。

首先尝试优化每个脚本。

我真的建议你使用函数而不是脚本。