MIDACOの並列化オプション

CPU時間を多く要する目的関数(および/または制約関数)をもつ問題に対して、MIDACOは効率的な手法を提供します。MIDACOは複数の関数評価を同時に実行できるため、関数評価にかかる時間が一定以上の場合には並列モードでの実行が推奨されます。なお、目安となる時間は使用するCPUシステム、プログラミング言語、および並列化の方法によって異なります(詳細はユーザーマニュアルのセクション6.2を参照)。MIDACOの並列モードでの実行は簡単です。さまざまな言語とアプローチの例は以下のリンクから参照してください。

言語並列化アプローチ
Matlabparfor
JuliaMulti-Threading
Pythonmultiprocessing
Pythonmpi4py
PythonSpark
PythonDask
C/C++OpenMP
C/C++MPI
C/C++GPGPU(ご連絡ください
C#Parallel.ForEach
FortranOpenMP
FortranMPI
FortranGPGPU
Rdopar
JavaFork/Join

32クアッドコアCPUのSparkクラスターでのMIDACO大規模並列化のスクリーンショット
クリックで拡大 ▶

 

MIDACOの並列化(スケールアップ)効果に関するメモ

SchlueterとMunetomo [17] は、MIDACOが並列化係数300までほぼ線形なスケールアップを示すことを数値的に実証しました。これは、MIDACOの並列化が非常に効率的であることを意味します。並列化係数が低い場合、観測された速度向上は線形的でした。例えば、並列化係数がP=8の場合、CPU時間を多く要する問題であれば、MIDACOアルゴリズムは直列モードの8倍の速さで実行されます。並列化係数がP=300の場合でも、MIDACOアルゴリズムは150倍以上の速度向上を示しました。このほぼ線形なスケールアップの特性は、MIDACOの並列化が数百から数千のスレッド/コアに対しても高い効果を発揮することを示しています。