MIDACO Parallelization in Java (Fork/Join)
Running MIDACO in serial and parallel on a cpu-time expensive objective function.
Midaco.java [ parallel version ] |
||
Serial Mode (P=1) | Parallel Mode (P=2) | Parallel Mode (P=4) |
Total Time: 75 Seconds | Total Time: 22 Seconds | Total Time: 13 Seconds |
Original: x1 | Speed Up: x3.4 |
Speed Up: x5.7 |
The results can be reproduced with the limited MIDACO version (available here).
Parallelization in Java requires the java.util.concurrent package to be installed.
Particular the Midaco.java [ parallel version ] will need following imports:
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.RecursiveAction;
Note on Super-Linear Speedup
Due to the highly efficient parallelism scheme implemented in MIDACO's Java gateway the parallelization benefit exhibits an even super-linear speedup. This means for example: If a parallelization factor P=2 is used, an actual speedup of 3.4 times is achieved (instead of only 2 times). Super-linear speedups are rare and very pleasant. More information on super-linear speedups can be found for example here: https://en.wikipedia.org/wiki/Speedup#Super-linear_speedup
Any problems running MIDACO? Please click here or contact us.