並列プールでのコードの実行
並列プールとは
並列プールは、計算クラスターまたはデスクトップ上にある一連の MATLAB® ワーカーです。既定では、parfor
などの並列言語機能で必要とされる場合に、並列プールは自動的に起動します。並列基本設定で、既定のクラスターを指定できます。[並列] メニューの [並列基本設定] を選択すると、基本設定パネルに既定のクラスターが表示されます。[並列] メニューで既定のクラスターを指定することもできます。あるいは、MATLAB コマンド ラインで parcluster
と parpool
をそれぞれ使用して、クラスターとプール サイズを選択できます。詳細については、図を参照してください。
並列プールのワーカーは対話的に使用することが可能で、ジョブの有効期間中に相互に通信を行います。parpool
ジョブはジョブ モニターで表示できます。これらのプール ワーカーを対話型で使用するために予約している間は他のユーザーは使用できません。MATLAB クライアント セッションから使用できる並列プールは一度に 1 つのみです。MATLAB では、現在の並列プールは parallel.Pool
オブジェクトで表されます。
並列プールの自動起動と自動停止
既定では、特定の並列言語機能が必要な場合、並列プールは自動的に起動します。以下を含む多くの関数が自動的に並列プールを起動できます。
並列基本設定で、プールが実行されるクラスターを指定します。基本設定にアクセスするには、[ホーム] タブの [環境] セクションで、[並列] 、 [並列基本設定] をクリックします。
並列基本設定で、プールを自動的に開く、あるいは閉じるオプションをオフにすることができます。プールを自動的に開くオプションをオフにして、並列プールが開いていない状態で Parallel Computing Toolbox の機能を使用する場合は、コードはクライアントで実行されます。
プールを起動および停止する代替方法
プールを自動的に開く選択をしていない場合、以下の方法でプールをコントロールできます。
MATLAB デスクトップからの並列プールの制御
MATLAB デスクトップの左下隅にある並列ステータス インジケーターを使用して、並列プールを手動で起動できます。
MATLAB Online では、既定で並列ステータス インジケーターが表示されません。まず、parpool
または並列プールを自動起動する関数のいずれかを使用して、並列プールを起動しなければなりません。
インジケーター アイコンをクリックし、[並列プールの起動] を選択します。プール クラスターは、既定のクラスターで指定します。既定のクラスターは、[並列] 、 [既定のクラスター] メニューにチェック マークで示されます。
プール実行中のメニュー オプションは異なっています。次のことが可能です。
ワーカー数とクラスター名を表示する
自動シャットダウンまでの時間を変更する
並列プールをシャットダウンする
プールを停止するには、[並列プールのシャットダウン] を選択することもできます。
プログラミング インターフェイス
並列プールの起動. 既定の設定を使用するか、または代替方法を指定することで、プログラムにより並列プールの起動と停止を実行できます。
既定の設定に応じた並列プールを起動するには、以下を実行します。
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 では、クラスター プロファイル |
関数 | MATLAB は、要求されたとおりのワーカー数でプールを起動しようとします。
|
関数 | MATLAB は、その範囲内の、
|
クラスター選択の優先順位
プールが実行されるクラスターの選択について、その優先順位は以下によって決まります。
コマンド ラインのクラスター オブジェクト引数は既定のプロファイル設定をオーバーライドし、プロファイル
'MyProfile'
によって特定されるクラスターを使用する。c = parcluster('MyProfile'); p = parpool(c);
クラスターは既定のプロファイルで指定される。
p = parpool;
参考
delete
| gcp
| parcluster
| parfor
| spmd
| distributed
| parfeval
| parpool