最近、クラスターでコードを実行するためのアクセス権を取得しました。私のコードは完全に並列化可能ですが、その並列性を最大限に活用する方法がわかりません。大きな行列の要素を計算する必要があり、それぞれが他の要素から独立しています。行列の計算を高速化するために、複数のマシン (100 など) で実行するジョブを送信したいと考えています。
今、私は複数のジョブを送信して、それぞれが行列の一部を計算し、それを .mat ファイルに保存するスクリプトを作成しました。最後に、それらをマージしてマトリックス全体を取得します。個々のジョブを送信するために、新しい .m ファイル (run1.m、run.2、...) を作成して変数を設定し、関数を実行してマトリックス内の関連部分を計算しました。したがって、基本的に run1.m は
id=1;compute_dists_matrix
次に、compute_dists_matrix は id を使用して、計算する部分を見つけます。次に、run1.m から run60.m までを作成し、それらをクラスターに qsub するスクリプトを作成しました。
たとえば、いくつかの MATLAB 機能を使用してこれを行うためのより良い方法があるかどうか疑問に思います。これは非常に典型的なタスクのように見えるからです。