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 时间的前两个消费者是评估个人和复制。
我正在使用 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 时间的前两个消费者是评估个人和复制。