Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

並列プールでのコードの実行

並列プールとは

並列プールは、計算クラスターまたはデスクトップ上にある一連の MATLAB® ワーカーです。既定では、parfor などの並列言語機能で必要とされる場合に、並列プールは自動的に起動します。並列基本設定で、既定のクラスターを指定できます。[並列] メニューの [並列基本設定] を選択すると、基本設定パネルに既定のクラスターが表示されます。[並列] メニューで既定のクラスターを指定することもできます。あるいは、MATLAB コマンド ラインで parclusterparpool をそれぞれ使用して、クラスターとプール サイズを選択できます。詳細については、図を参照してください。

並列プールのワーカーは対話的に使用することが可能で、ジョブの有効期間中に相互に通信を行います。parpool ジョブはジョブ モニターで表示できます。これらのプール ワーカーを対話型で使用するために予約している間は他のユーザーは使用できません。MATLAB クライアント セッションから使用できる並列プールは一度に 1 つのみです。MATLAB では、現在の並列プールは parallel.Pool オブジェクトで表されます。

Diagram showing a client MATLAB and a parallel cluster. The cluster contains eight parallel workers and the client has started a parallel pool using three of the workers.

並列プールの自動起動と自動停止

既定では、特定の並列言語機能が必要な場合、並列プールは自動的に起動します。以下を含む多くの関数が自動的に並列プールを起動できます。

並列基本設定で、プールが実行されるクラスターを指定します。基本設定にアクセスするには、[ホーム] タブの [環境] セクションで、[並列][並列基本設定] をクリックします。

プールを起動および停止する代替方法

並列基本設定で、プールを自動的に開く、あるいは閉じるオプションをオフにすることができます。プールを自動的に開く選択をしていない場合、以下の方法でプールをコントロールできます。

MATLAB デスクトップからの並列プールの制御

MATLAB デスクトップの左下隅にある並列ステータス インジケーターを使用して、並列プールを手動で起動できます。

The parallel status indicator, including a menu showing options for starting a parallel pool and inspecting your parallel preferences.

MATLAB Online では、既定で並列ステータス インジケーターが表示されません。まず、parpool または並列プールを自動起動する関数のいずれかを使用して、並列プールを起動しなければなりません。

インジケーター アイコンをクリックし、[並列プールの起動] を選択します。プール クラスターは、既定のクラスターで指定します。既定のクラスターは、[並列][既定のクラスター] メニューにチェック マークで示されます。

プール実行中のメニュー オプションは異なっています。次のことが可能です。

  • ワーカー数とクラスター名を表示する

  • 自動シャットダウンまでの時間を変更する

  • 並列プールをシャットダウンする

The parallel status indicator, highlighted blue to indicate that a parallel pool is running. A tooltip shows that a parallel pool has been running for about one minute and will shut down if still idle in 29 minutes.

プールを停止するには、[並列プールのシャットダウン] を選択することもできます。

The parallel status indicator, highlighted blue to indicate that a parallel pool is running and including a menu showing options for shutting down the parallel pool and inspecting your parallel preferences.

プログラミング インターフェイス

並列プールの起動.  既定の設定を使用するか、または代替方法を指定することで、プログラムにより並列プールの起動と停止を実行できます。

既定の設定に応じた並列プールを起動するには、以下を実行します。

parpool

特定のサイズのプールを起動するには、以下を実行します。

parpool(4)

既定以外のクラスターを使用してプールの実行場所を指定するには、以下を実行します。

parpool('MyCluster',4)

さまざまな並列環境で並列プールを実行できます。詳細については、スレッドベースの環境またはプロセスベースの環境の選択を参照してください。

並列プールのシャットダウン.  プールをシャットダウンするときに、現在の並列プールを取得してそのオブジェクトを使用するには、以下を実行します。

p = gcp;
delete(p)

並列プールが実行中でないことの確認.  引数を指定せずにコマンド gcp を発行すると、誤ってプールを開くことがあります。この問題を回避するには、以下を実行します。

delete(gcp('nocreate'))

プール サイズとクラスターの選択

プール サイズを指定するには、いくつかの方法があります。複数の要因によって、プール サイズが制限される可能性があります。並列プールの実際のサイズは、以下の組み合わせによって決まります。

  1. ライセンスまたはクラスター サイズ

    プールのワーカー数の上限は、クラスターのワーカー数によって制限されます。この制限は、使用可能な MATLAB Parallel Server™ のライセンス数によって決まることがあります。MATLAB ジョブ スケジューラの場合、この制限はクラスターで実行中のワーカー数によって決まることがあります。クライアント マシン上で実行されるローカル クラスターでは、Parallel Computing Toolbox™ 用のライセンス以外は不要です。ワーカー数の制限は、既知のデスクトップ ハードウェアの範囲でサポートされるよう、十分高い値となっています。

  2. クラスター プロファイル指定のワーカー数 (NumWorkers)

    クラスター オブジェクトでは、ワーカーの数にハード制限を設けることができます。この制限は、クラスター プロファイルで指定します。コマンド ラインまたはクラスター プロファイルの PreferredPoolNumWorkers プロパティでワーカーの数を増やすように要求しても、適用されるプロファイルで設定された制限を超えることはできません。制限を超える数を指定しようとするとエラーが発生します。

  3. コマンド ライン引数

    プール サイズをコマンド ラインで指定した場合は、クラスター プロファイルの PreferredPoolNumWorkers プロパティで設定されている値がオーバーライドされます。コマンド ラインで要求されたプール サイズは、適用されるクラスター プロファイルの範囲内でなければなりません。

  4. クラスター プロファイルの推奨ワーカー数 (PreferredPoolNumWorkers) (R2023a 以降)

    コマンド ラインでプール サイズを指定しなかった場合、MATLAB は、クラスター プロファイルの PreferredPoolNumWorkers クラスター オブジェクト プロパティで決定されるサイズのプールを起動しようと試みます。この値は "基本設定" であり、特定のワーカー数についての要件やリクエストではありません。したがって、PreferredPoolNumWorkers プロパティで指定されている数と同じワーカー数のプールを起動できない場合は、プールがエラーなしで縮小されます。PreferredPoolNumWorkers プロパティの既定値はクラスター タイプによって異なります。

    クラスター タイプPreferredPoolNumWorkers の既定値

    MATLAB ジョブ スケジューラ

    共有クラウド

    サードパーティ製スケジューラ

    NumWorkers プロパティの値と 32 のどちらか小さい方。

    個人用クラウド

    NumWorkers プロパティの値。

    メモ

    ローカル プロファイルでは、既定のプール サイズは NumWorkers プロパティの値によって決定されます。

    作成されるプールのサイズが制限されないように、PreferredPoolNumWorkers プロパティの値を大きい数に設定できます。正確なワーカー数が必要な場合は、コマンド ラインで指定してください。

プールが実行されるクラスターの選択について、その優先順位は以下によって決まります。

  1. コマンド ラインのクラスター オブジェクト引数は既定のプロファイル設定をオーバーライドし、プロファイル 'MyProfile' によって特定されるクラスターを使用する。

    c = parcluster('MyProfile');
    p = parpool(c);
  2. クラスターは既定のプロファイルで指定される。

    p = parpool;

参考

| | | | | | |

関連する例

詳細