ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

並列計算の対応する主な問題

並列 for ループ (parfor) の実行

多くのアプリケーションには複数のコード セグメントが含まれ、そのうちのいくつかは繰り返しです。通常、こうしたケースは for ループを使用して解くことができます。1 台のコンピューターまたはコンピューター クラスターでコードを並列実行する機能により、多くの場合、パフォーマンスが大幅に改善されます。

  • パラメーター スイープ アプリケーション

    • 多数の反復 — スイープには多数の反復が含まれるため時間がかかる場合があります。それぞれの反復の実行に長い時間はかからなくとも、数千、数百万の反復を逐次実行するには長時間かかる可能性があります。

    • 長い反復 — スイープに多数の反復が含まれない場合でも、個々の反復の実行に長時間かかることがあります。

    一般に、反復間の唯一の違いは入力データの違いです。このような場合は、スイープの複数の反復を同時に実行する機能によってパフォーマンスを改善できます。このような反復を並列で評価することは、大規模な、あるいは複数のデータセットをスイープするための理想的な方法です。並列ループに関する唯一の制限は、どの反復も他の反復に依存できないということです。

  • 独立したセグメントを伴うテスト スイート — 互いに関連しない一連のタスクを実行するアプリケーションの場合、独立したリソース上でこれらのタスクを同時に実行できます。明らかに異なるタスクを含むこのようなケースで for ループを使用したことはないかもしれませんが、parfor ループでは適切なソリューションを提供できます。

Parallel Computing Toolbox™ ソフトウェアでは、個々のループ反復を複数の MATLAB® ワーカーで同時に実行できるようにすることで、こうしたループ実行のパフォーマンスを改善します。たとえば、100 回の反復を伴うループを 20 の MATLAB ワーカーからなるクラスターで実行でき、これによって各ワーカーは同時に、ループの 5 回の反復のみを実行することになります。ただし、通信のオーバーヘッドやネットワーク トラフィックのため、実行速度が実際 20 倍になるというわけではありませんが、それでも大幅な速度向上が望めます。クライアントと同じマシンですべてのローカル ワーカーを実行する場合でも、マルチコア/マルチプロセッサ マシンではパフォーマンスの大幅な向上が確認される可能性があります。このように、ループの実行に長時間を要する原因が、反復数が多いためであっても各反復の時間が長いためであっても、反復を複数の MATLAB ワーカーに分散することでループ速度を改善できます。

バッチ ジョブの並列実行

MATLAB セッションで対話形式で作業する場合は、作業を MATLAB ワーカー セッションにオフロードし、バッチ ジョブとして実行できます。このジョブを実行するコマンドは非同期的です。つまり、クライアントの MATLAB セッションは停止されず、MATLAB ワーカーがコードの評価を行っている間も対話型セッションを続行できます。MATLAB ワーカーはクライアントと同じマシンか、または MATLAB Distributed Computing Server™ を使用している場合はリモート クラスター マシンで実行できます。

大規模なデータセットの分割

コンピューターのメモリに対し大きすぎる配列がある場合は、単一の MATLAB セッションでは簡単に処理できません。Parallel Computing Toolbox ソフトウェアを使用するとそのような配列が複数の MATLAB ワーカーに分散され、各ワーカーには配列の一部のみが保持されます。この場合も、配列全体を単一のエンティティとして扱えます。各ワーカーは配列の担当部分のみを扱い、必要に応じて (たとえば、行列の乗算で必要な場合などに) 相互にデータを自動転送します。こうした配列を追加変更なしで直接に扱えるよう、多数の行列演算および関数が拡張されました。分散配列と対話型分散配列での MATLAB 関数およびMATLAB コンストラクター関数の使用を参照してください。

この情報は役に立ちましたか?