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.

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

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

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

並列基本設定で、プールを自動的に開く、あるいは閉じるオプションをオフにすることができます。プールを自動的に開くオプションをオフにして、並列プールが開いていない状態で Parallel Computing Toolbox の機能を使用する場合は、コードはクライアントで実行されます。

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

プールを自動的に開く選択をしていない場合、以下の方法でプールをコントロールできます。

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

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

The parallel status indicator, including a drop down 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'))

メモ

起動中の並列プールを停止するには、Ctrl+C または Ctrl+Break を押します。Apple macOS では、Command. (Command キーとピリオド キー) も使用できます。

プール サイズに影響する要因

Parallel Computing Toolbox™ は、最大 2000 個のワーカーをもつ並列プールをサポートできます。並列プールを作成するとき、クラスター オブジェクト プロパティ NumWorkers および PreferredPoolNumWorkers の値が、取得する並列プールのサイズに影響します。

NumWorkers クラスター プロパティ

NumWorkers クラスター プロパティは、クラスターで使用できるワーカー数のハード制限です。

  • MATLAB ジョブ スケジューラ クラスターの場合、NumWorkers プロパティの値は、クラスターで実行中のワーカー数から決定されます。

  • クライアントで実行中のローカル クラスターおよびサードパーティ製スケジューラのクラスターの場合、NumWorkers プロパティの値はクラスター プロファイルで指定できます。

NumWorkers プロパティの値より大きい並列プールは作成できません。

PreferredPoolNumWorkers クラスター プロパティ

PreferredPoolNumWorkers クラスター オブジェクト プロパティは、クラスター オブジェクトで作成されるプールのサイズの "基本設定" を指定します。これは、特定のワーカー数についての要件やリクエストではありません。PreferredPoolNumWorkers プロパティの既定値はクラスター タイプによって異なります。この値はクラスター プロファイルで変更できます。以下は、クラスター タイプとその PreferredPoolNumWorkers の既定値のリストです。

  • MATLAB ジョブ スケジューラ、共有クラウド、サードパーティ製スケジューラのクラスター — 32

  • 個人用クラウド クラスター — Inf

  • ローカルの Processes クラスター — Inf (R2023b 以降)

    R2023a において: ローカル プロファイルの場合、既定値は NumWorkers プロパティの値です。

プールの作成手法

NumWorkers プロパティおよび PreferredPoolNumWorkers プロパティの値と、プールの作成に使用する手法との組み合わせにより、並列プールの実際のサイズが決まります。

プールの作成手法実際のプール サイズ
  • プールの自動作成を有効にした状態で、プールを自動的に起動できる関数を実行する。

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

  • プール サイズ引数を指定せずに関数 parpool を呼び出す。

MATLAB では、クラスター プロファイル PreferredPoolNumWorkers プロパティの値を使用して、プール内の最大ワーカー数を決定します。PreferredPoolNumWorkers プロパティで指定されている数と同じワーカー数のプールを MATLAB が起動できない場合は、プールがエラーなしで縮小されます。プール サイズが NumWorkers の値を超えることはできません。

関数 parpool を実行してプール サイズを整数として指定する。

MATLAB は、要求されたとおりのワーカー数でプールを起動しようとします。

  • 指定した値が NumWorkers プロパティの値を超えない場合は、指定したワーカー数のプールが得られます。

  • 指定した値が NumWorkers プロパティの値を超える場合は、MATLAB はエラーをスローします。

関数 parpool を実行してプール サイズを整数の範囲として指定する。

MATLAB は、その範囲内の、NumWorkers プロパティの値を超えない最大値でプールを作成しようとします。

  • 範囲の下限が NumWorkers プロパティの値より大きい場合は、MATLAB はエラーをスローします。

  • 範囲の上限が NumWorkers プロパティの値を超える場合は、NumWorkers プロパティの値を上限とする最大限のプール サイズが得られます。

クラスター選択の優先順位

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

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

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

    p = parpool;

参考

| | | | | | |

関連する例

詳細