我已经用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)
请帮我
谢谢
答案 0 :(得分:0)
我建议你使用"运行和时间"来运行你的功能。工具。如果原因在parfor-procedure或您的函数中,结果将显示。 可能是parfor程序是不必要的并且没有任何优势,但它总是取决于你运行的功能。
答案 1 :(得分:0)
您提到您的CPU有两个核心。一个问题可能是代码本身,它看起来好像是在调用脚本而不是函数,所以你可能会不必要地淹没你的工作区。此外,如果这些脚本中的任何一个在运行时声明变量,您可能会堵塞RAM(Matlab特别擅长),从而使您的代码运行速度变慢。
首先尝试优化每个脚本。
我真的建议你使用函数而不是脚本。