MIDACOの並列化オプション
CPU時間を多く要する目的関数(および/または制約関数)をもつ問題に対して、MIDACOは効率的な手法を提供します。MIDACOは複数の関数評価を同時に実行できるため、関数評価にかかる時間が一定以上の場合には並列モードでの実行が推奨されます。なお、目安となる時間は使用するCPUシステム、プログラミング言語、および並列化の方法によって異なります(詳細はユーザーマニュアルのセクション6.2を参照)。MIDACOの並列モードでの実行は簡単です。さまざまな言語とアプローチの例は以下のリンクから参照してください。
言語 | 並列化アプローチ ▷ |
Matlab | parfor |
Julia | Multi-Threading |
Python | multiprocessing |
Python | mpi4py |
Python | Spark |
Python | Dask |
C/C++ | OpenMP |
C/C++ | MPI |
C/C++ | GPGPU(ご連絡ください) |
C# | Parallel.ForEach |
Fortran | OpenMP |
Fortran | MPI |
Fortran | GPGPU |
R | dopar |
Java | Fork/Join |
32クアッドコアCPUのSparkクラスターでのMIDACO大規模並列化のスクリーンショット
クリックで拡大 ▶
MIDACOの並列化(スケールアップ)効果に関するメモ
SchlueterとMunetomo [17] は、MIDACOが並列化係数300までほぼ線形なスケールアップを示すことを数値的に実証しました。これは、MIDACOの並列化が非常に効率的であることを意味します。並列化係数が低い場合、観測された速度向上は線形的でした。例えば、並列化係数がP=8の場合、CPU時間を多く要する問題であれば、MIDACOアルゴリズムは直列モードの8倍の速さで実行されます。並列化係数がP=300の場合でも、MIDACOアルゴリズムは150倍以上の速度向上を示しました。このほぼ線形なスケールアップの特性は、MIDACOの並列化が数百から数千のスレッド/コアに対しても高い効果を発揮することを示しています。