Search code examples
pythonparallel-processingscipyparallelism-amdahldifferential-evolution

Predicting Parallel Performance of Differential Evolution in Python


I am an engineering student doing an internship on genetic algorithms. Lately, I've been making a lot of research on Differential Evolution. With the responsible of my internship we decided to test the Differential Evolution by directly using scipy.optimize.differential_evolution().

In the documentation, it is mentioned that parallelism is possible but we are not sure if it is really going to make a big difference. That's why we decided to find if there is a way to predict the improvement of the performance. I found that such a thing could be possible by using Amdahl's Law. My problem is that in order to use Amdahl's Law, I have to know the "portion of the program can be parallelized". Is there anyone who could help me finding this portion? Or possibly predicting the improvement in another way?

Thank you in advance!


Solution

  • Q : "...such a thing could be possible by using Amdahl's Law. ( SER v/s PAR portion ) Or another way?"

    First, learn more details about the revised, at least the overhead-strict Amdahl's Law,
    better the overhead-strict & resources-aware re-formulation,
    as both the overheads and the resources (un)availability during the atomicity-of-work epochs ( in evolutionary periods ) will decide way more in your use-case, than the overhead-naive SER/PAR portions do.

    If in a need to see these effect dynamically and interactively, read also this, where the first graph links to an interactive demonstration of what happens for user-selectable [SERIAL] and [PARALLEL] portions altogether with selecting setup and termination + all SER/DES-related add-on overheads, which may go pretty wild, if you opt to go into workers = -1 or RAM-thrashing starts to turn things wreck havoc.

    enter image description here