簡體   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