Python DEAP遗传算法多核速度

9
我正在使用Python的DEAP包,想要将我的代码多核化,我使用http://deap.gel.ulaval.ca/doc/dev/tutorials/distribution.html上的教程成功地使用了multiprocessing。
我的问题是:使用8个核心,理论上会有多少加速?我问这个问题是因为我想决定在相同时间内可以运行多少个个体和代数,就像单核版本一样。我的代码以前需要大约200秒才能运行,现在使用8个核心只需要大约0.5秒(这是一个400倍的加速)。我可以假设任何东西都会加速400倍吗?我知道这很复杂,但您的帮助将不胜感激。
总的来说,如果有人能帮忙,我想了解如何使用多核技术改变计算流程。它只是将每个个体的评估映射到每个代的不同核心上吗?还是并行运行代?如果您知道任何可阅读的文档,请告诉我。
我没有提供代码示例,因为这是一个非常高级的问题,所以不必要。
1个回答

6

它是将每个个体的评估映射到不同的核心上进行每一代的运算,还是同时运行多代?

例如,此示例将evaluate操作映射如下...

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

单个运行进程涉及到的映射:将所有的invalid_ind收集到一个队列中,当有空闲核心时,下一个个体将被指派给该核心来运行evaluate例程。当队列为空时,所有结果将被组装成一个列表并分配回fitnesses。然后该进程将继续运行。
所以:
  • "是",它确实在不同的核心上映射每个个体的评估。
  • "不是",它不会并行运行代。
至少这是我从我提出这个问题时推断出来的。当然,根据您的应用程序,在我使用DEAP和cProfile的经验中,消耗CPU时间最多的前两个因素是评估个体和复制。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接