Java(Fork/Join)でのMIDACOの並列化

CPU時間を要する目的関数をもつ事例での
直列モードと並列モードによるMIDACOの実行

Example_parallel.java ▶

Midaco.java ▶ [並列化バージョン]
直列モード (P=1)並列モード (P=2)並列モード (P=4)
合計時間:75 秒合計時間:22秒合計時間:13 秒
オリジナル:x1スピードアップ:x3.4 スピードアップ: x5.7 

結果はMIDACO制限版で再現できますこちらで入手▷


Javaでの並列処理には、「java.util.concurrent」パッケージが必要です。

特にMidaco.java[並列化バージョン]では、以下のインポートが必要です

import
java.util.concurrent.ForkJoinPool;
import java.util.concurrent.RecursiveAction;


超線形スピードアップに関するメモ Note on Super-Linear Speedup

MIDACOのJavaゲートウェイに実装された非常に効率的な並列化方式のおかげで、並列化の効果が超線形のスピードアップとなります。たとえば、並列化係数P=2を使用した場合、実際のスピードアップは3.4倍(2倍ではなく)になります。超線形スピードアップは珍しく、非常に喜ばしい結果です。超線形スピードアップの詳細は、たとえば以下のリンクをご参照ください。https://en.wikipedia.org/wiki/Speedup#Super-linear_speedup


MIDACOの実行に問題がありますか? こちらを参照、またはお問い合わせください