【问题标题】:python DEAP genetic algorithm multi-core speedpython DEAP遗传算法多核速度
【发布时间】:2020-05-21 11:27:31
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: python multiprocessing deap


    【解决方案1】:

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

    该示例映射evaluate 操作因此...

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

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

    所以:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-09
      • 2019-12-26
      • 2018-01-18
      • 2018-06-25
      • 1970-01-01
      • 2017-05-30
      • 2020-09-06
      • 2023-02-20
      相关资源
      最近更新 更多