私は 4 コア PC で GNU Octave 4.0.0 を使用してモンテカルロ シミュレーションを実行しています。シミュレーションでは、スクリプトを 50,000 回計算するのに約 4 時間かかります (私の問題に固有の問題です)。これは、計算にかなりの時間がかかります。計算時間を短縮するために、複数のコアで同時に Octave を実行する方法があるかどうか知りたいです。
前もって感謝します。
答え1
GNU Parallelはマルチスレッドは行いませんが、意思マルチプロセス処理を実行すれば、十分かもしれません:
seq 50000 | parallel my_MC_sim --iteration {}
デフォルトでは CPU コアごとに 1 つのプロセスに設定され、2 つの並列ジョブの出力が混在しないようになります。
この並列化をOctaveスクリプトに組み込むこともできます。https://www.gnu.org/software/parallel/parallel_tutorial.html#シェバン
GNU Parallel は汎用の並列化ツールであり、同じマシンまたは SSH アクセスできる複数のマシンでジョブを並列に実行することを容易にします。多くの場合、for
ループを置き換えることができます。
4 つの CPU で実行したい 32 個の異なるジョブがある場合、並列化するための最も簡単な方法は、各 CPU で 8 つのジョブを実行することです。
GNU Parallel は、代わりに、1 つのプロセスが終了すると新しいプロセスを生成します。これにより、CPU がアクティブな状態になり、時間が節約されます。
インストール
GNU Parallel がディストリビューションにパッケージ化されていない場合は、ルート アクセスを必要としない個人用インストールを行うことができます。次の操作を実行すると、10 秒で完了します。
(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash
その他のインストールオプションについては、http://git.savannah.gnu.org/cgit/parallel.git/tree/README
もっと詳しく知る
その他の例を見る:http://www.gnu.org/software/parallel/man.html
紹介ビデオをご覧ください:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
チュートリアルを進めてください:http://www.gnu.org/software/parallel/parallel_tutorial.html
サポートを受けるには、メール リストに登録してください。https://lists.gnu.org/mailman/listinfo/parallel