python DEAP遗传算法多核速度

python DEAP genetic algorithm multi-core speed

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

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

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

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

Does it just map the evaluation of each individual over different cores for each generation, or does it run generations in parallel?

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

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

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

所以:

  • "Yes" 它确实映射了每个人在不同核心上的评估,
  • "No" 它不会 运行 并行生成

至少那是我从 I asked this question 开始的推测。当然,根据您的应用程序,根据我使用 DEAP 和 cProfile 的经验,CPU 时间的前两个消费者是评估个人和复制。