Main Content

並列言語の意思決定表

MATLAB®、Parallel Computing Toolbox™、および MATLAB Parallel Server™ ソフトウェアには、より多くのハードウェア リソースを利用することが可能な自動並列サポートを備えた並列言語機能と関数が用意されています。

  • 並列言語機能は、MATLAB コードの並列化に役立ちます。一般的な並列機能の例については、並列計算言語機能の選択を参照してください。

  • 並列言語機能を選択した後、並列 MATLAB コードをどこで実行するかを決めます。詳細については、ワークフローの選択を参照してください。

  • 一部の関数には、自動並列サポートが備わっています。外部の並列言語機能を選択することなく UseParallel オプションを有効にすることができます。詳細については、自動並列サポートを使用した MATLAB 関数の実行を参照してください。

並列計算言語機能の選択

次の表を使用して、用途に応じて並列言語機能を選択するための参考にしてください。関数を非同期的に実行する場合、MATLAB では同時にフォアグラウンドで他のコードを実行できます。

用途の例関数説明ワーカー間の通信同期または非同期

  • モンテカルロ解析を実行する。

  • パラメーター スイープを実行する。

  • 何百万ものイメージの並列処理。

parfor各反復が他のすべての反復から独立した並列 for ループ。 なし同期

  • 複数のシミュレーションを実行する。

  • モデルをテストおよび最適化する。

  • 実験を設計する。

parsim (Simulink)動的システムを並列または逐次で複数回シミュレートする。なし同期

  • 最適化の手順を実装する。

  • "極めて困難な" 問題を解決する。

  • コードを実行しながらケースを追加する。

  • 中間結果を取得する。

  • バックグラウンドで関数を評価する。

parfeval並列プール ワーカーで関数を実行する。 なし非同期

並列プール内の並列ワーカーの環境を設定する。

parfevalOnAll対話型並列プールのすべてのワーカーで関数を非同期で実行する。なし非同期

MATLAB 関数を GPU で使用する。

gpuArrayサポートされる関数に GPU 配列を渡してコードを GPU で実行する。なし同期

  • 計算中にワーカー間でデータを転送する。

  • 分散配列の異なる部分にアクセスするワーカーでコードを実行する。

  • メッセージ パッシングを有効にして複数のワーカーで単一のプログラムを実行する。

  • 大きすぎてメモリに収まらないイメージを処理する。

spmd並列プールのすべてのワーカーでコードのブロックを並列で実行する。あり同期

  • 大規模なデータ セットで深層学習ネットワークに学習させる。

  • クラウド ストレージのデータの読み取りと書き込みを行う。

  • 線形代数問題を解く。

distributed分散配列と spmd コード ブロックを使用して大規模な多次元データを並列で解析する。あり同期

  • 大きすぎてメモリに収まらず 1 つの次元が大きいデータを処理する。

  • 機械学習タスクを実行する。

  • クラウド ストレージのデータの読み取りと書き込みを行う。

tallデスクトップ、クラスター、または Hadoop® クラスターで並列プールを使用して tall 配列の式を並列で評価する。あり同期

ワークフローの選択

対話型ワークフロー

対話型ワークフローは、parpool を使用してワーカーの並列プールで並列コードを実行する場合に使用します。対話型ワークフローでは、準備ができた時点ですぐに結果を確認できます。ただし、現在の MATLAB クライアント セッションを閉じた後はデータを取得できません。

対話型ワークフローを使用するには、MATLAB コードで parforparfevalparfevalOnAllspmddistributed、および tall を呼び出します。これらの関数を呼び出すと自動的に並列プールが起動されます。詳細については、並列プールでのコードの実行を参照してください。

gpuArray を使用して、MATLAB ワークスペース内の配列を gpuArray オブジェクトに変換します。gpuArray 対応の任意の MATLAB 関数を使用して gpuArray オブジェクトを操作できます。詳細については、GPU での MATLAB 関数の実行を参照してください。

バッチ ワークフロー

バッチ ワークフローは、計算クラスターに作業をオフロードして他のタスクを実行する場合や、実行時間の長いコードを後で実行するために送信する場合に使用します。バッチ ワークフローでは、ジョブの処理中に MATLAB クライアント セッションを閉じてもかまいません。MATLAB ではバッチ ジョブに関する情報が保存されるため、後から、あるいは新しいクライアント セッションでバッチ ジョブの結果を取得できます。

バッチ ワークフローでは、バッチ ワークフローでの他の任意の MATLAB 関数とともに parforparfevalgpuArrayspmddistributed、および tall の並列言語機能がサポートされます。次の表のいずれかのバッチ並列言語機能を使用して、コードをスクリプトまたは関数として送信します。詳細については、バッチ並列ジョブの実行を参照してください。

用途の例関数説明ワーカー間の通信同期または非同期

関数またはスクリプトの実行をオフロードしてクラスターまたはデスクトップのバックグラウンドで実行する。

batch MATLAB スクリプトまたは関数をオフロードしてワーカーで実行する。なし非同期
並列シミュレーションをバッチでオフロードする。batchsim (Simulink)シミュレーションをオフロードして計算クラスターで実行する。なし非同期

  • parfor ブロックや spmd ブロックなどの並列言語が含まれたコードをオフロードして並列で実行する。

  • クラスターで並列プールを使用する。

batch(__,Pool=...)MATLAB スクリプトまたは関数をオフロードしてワーカーの並列プールで実行する。あり非同期

  • 独立した並列タスクを細かく制御する。

  • タスクを照合してクラスターの独立したワーカーにオフロードする。

  • タスクを送信し、結果に後でアクセスする。

createJob任意の数のタスクをクラスターの独立したワーカーにオフロードする。タスクは関数またはスクリプトのいずれかとする。 なし非同期

  • クラスターの並列プールの通信タスクを細かく制御する。

  • 関数を分散データ セットで同時に実行する。

  • タスクを送信し、結果に後でアクセスする。

createCommunicatingJob1 つのタスクをクラスターの通信ワーカーにオフロードする。 あり非同期

メモ

バッチ関数は対話型並列プールでは使用できません。ワーカーのプールをバッチ実行に使用するコードを投入するには、batch(__,Pool=...) または createCommunicatingJob を使用します。

参考

| (Simulink) | | | | | | | | (Simulink) | |

関連するトピック