プログラムが 1 つの大きなループにすぎない場合、OpenMP を使用すると次のように簡単に記述できます。
#pragma omp parallel for
OpenMP は共有メモリ プログラミングにのみ役立ちます。これは、クラスターがkerrighedのようなものを実行していない限り、 OpenMP を使用する並列バージョンが一度に最大 1 つのノードでしか実行されないことを意味します。
MPI はメッセージ パッシングに基づいており、開始するのは少し複雑です。利点は、プログラムを一度に複数のノードで実行し、必要に応じてノード間でメッセージをやり取りできることです。
「異なるデータセットに対して」と言ったことを考えると、問題は実際には「恥ずかしいほど並列」のカテゴリに分類される可能性があるように思えます.100を超えるデータセットがある場合は、ノードごとに1つのデータセットを実行するようにスケジューラを設定するだけです.それらがすべて完了するまで、コードを変更する必要はなく、単一のノードを使用するだけでほぼ 100 倍の速度になります。
たとえば、クラスタがコンドルをスケジューラとして使用している場合、ジョブの説明の「Arguments =」行のみを変更して、データ項目ごとに 1 つのジョブを「vanilla」ユニバースに送信できます。(より賢明なコンドルでこれを行う方法は他にもあり、トルク、sge などにも同様の方法があります。)