繁体   English   中英

python DEAP遗传算法多核速度

[英]python DEAP genetic algorithm multi-core speed

我正在使用 Python 的 DEAP pacakge,我想对我的代码进行多核处理,我使用http://deap.gel.ulaval.ca/doc/dev/tutorials/distribution.html上的教程使用多处理成功地做到了。

我的问题如下:使用 8 个内核,理论上我能获得多少加速? 我问的原因是因为我想决定在与单核版本相同的时间内我可以运行多少个人和代。 我的代码过去需要大约 200 秒才能运行,并且有 8 个内核,现在需要大约 0.5 秒(这是 400 倍的加速)。 我可以假设任何事情都会加速 400 倍吗? 我知道这很复杂,但您的帮助将不胜感激。

一般来说,如果有人可以提供帮助,我想了解多核如何改变计算流程。 它是否只是将每个人的评估映射到每一代的不同内核上? 或者它并行运行几代? 如果您知道我可以阅读的任何文档,请告诉我。

我没有提供代码示例,因为它似乎没有必要,因为这是一个非常高级的问题。

它只是将每个人的评估映射到每一代的不同内核上,还是并行运行几代?

该示例将evaluate操作映射到...

fitnesses = toolbox.map(toolbox.evaluate, invalid_ind)

单独运行的进程命中映射:所有invalid_ind都被编组到单个队列中,并且当核心可用时,队列中的下一个个体被分配给该核心以运行evaluate例程。 当队列为空时,所有结果都被组合成一个列表并分配回fitnesses 然后这个过程继续它是孤独的。

所以:

  • “是”它确实将每个人的评估映射到不同的核心上,并且,
  • “不”它不会并行运行几代

至少当我问这个问题我是这么推测的。 当然,根据您的应用程序,根据我使用 DEAP 和 cProfile 的经验,CPU 时间的前两个消耗者是评估个人和复制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM