parpool
クラスターでの並列プールの作成
構文
説明
parpool
は、既定のプロファイルを使用してワーカーの並列プールを起動します。既定の基本設定を使用すると、MATLAB® はローカル マシン上で 1 つの物理 CPU コアにつき 1 つのワーカーをもつプール (既定のプロファイルで設定された上限まで) を起動します。並列基本設定の詳細については、並列基本設定の指定を参照してください。
通常、プールのサイズは既定のプロファイルの PreferredPoolNumWorkers
プロパティで指定されます。プール サイズに影響を及ぼす可能性のあるすべての要因については、プール サイズに影響する要因を参照してください。
parpool
はワーカーのプールに特別なジョブを作成し、MATLAB クライアントを並列プールに接続することで、MATLAB の並列言語機能をすべて使用可能にします。並列言語機能には parfor
、parfeval
、parfevalOnAll
、spmd
および distributed
が含まれます。可能な場合には、ワーカーの作業フォルダーは MATLAB クライアント セッションの作業フォルダーと一致するように設定されます。
parpool(
は、指定されたワーカー数のプールを作成して返します。poolsize
)poolsize
には正の整数か、または整数の 2 要素ベクトルとして指定された範囲を使用できます。poolsize
が範囲の場合、結果のプールのサイズは要求された範囲で最大になります。
poolsize
を指定すると、PreferredPoolNumWorkers
プロパティで指定された値がオーバーライドされます。また、ワーカーが使用可能になるまで待機しなければならない場合でも、正確にその数のワーカーからなるプールが起動されます。大部分のクラスターでは、開始できるワーカーの最大数が決まっています。プロファイルで MATLAB ジョブ スケジューラ クラスターが指定されている場合、parpool
は使用するワーカーを、既に実行中のワーカーとその MATLAB ジョブ スケジューラで使用可能なワーカーから確保します。プロファイルでローカルまたはサードパーティ製スケジューラが指定されている場合、parpool
はプールのワーカーを起動するようそのスケジューラに指示します。
parpool(___,
は、プールを起動する際に特定のプロパティに対して指定した値を適用します。Name,Value
)
はクラスターのプールを示す poolobj
= parpool(___)parallel.Pool
オブジェクトをクライアント ワークスペースに返します。このプール オブジェクトを使用すると、プールをプログラムにより削除したり、プールのプロパティにアクセスすることができます。並列プールをシャットダウンするには、delete(pool)
を使用します。
例
入力引数
出力引数
ヒント
デスクトップの左下隅にあるプール ステータス インジケーターは、プールへのクライアント セッション接続とプールのステータスを表します。アイコンをクリックすると、サポートされているプール操作のメニューが表示されます。
プールが実行中の場合: プールが実行中でない場合:
並列基本設定で、必要に応じて並列プールを自動作成するよう設定されている場合、
parpool
コマンドを明示的に呼び出す必要はありません。プール セットアップ時のオーバーヘッド時間が発生するタイミングを制御する場合は、プールを明示的に作成し、そのプールを以降の並列言語構成で使用できます。delete(poolobj)
は並列プールをシャットダウンします。並列プールがない場合、spmd
とparfor
はクライアント内でシングル スレッドとして実行されます。ただし、並列基本設定で並列プールが自動起動するよう設定されている場合を除きます。MATLAB エディターを使用して、並列プールに付加されているファイルをクライアント上で更新すると、更新内容は自動的にプール内のワーカーに伝播されます(この自動更新は Simulink® モデル ファイルには適用されません。更新されたモデル ファイルをワーカーに伝播するには、関数
updateAttachedFiles
を使用します)。可能な場合には、ワーカーの作業フォルダーは MATLAB クライアント セッションの作業フォルダーと一致するように初期設定されます。次に、以下のコマンドをクライアントのコマンド ウィンドウに入力すると、プールのすべてのワーカーでも実行されます。
これによって、全ワーカー上で作業フォルダーとコマンド検索パスを設定でき、これ以降、
parfor
ループなどのプールのアクティビティが適切なコンテキストで実行されるようになります。Windows® オペレーティング システムを使用するクライアントで
cd
でフォルダーを変更したり、addpath
でパスを追加したりする際にワーカーに送信される値は可能な限りフォルダーの UNC パスです。これは、Linux® オペレーティング システムを使用するクライアントではフォルダーの絶対位置になります。これらのコマンドがクライアントで機能しない場合、ワーカー上で実行されることはありません。たとえば、
addpath
でクライアントがアクセスできないフォルダーを指定した場合、このaddpath
コマンドはワーカーで実行されません。ただし、作業フォルダーがクライアント上では設定できても、いずれかのワーカーで指定どおりには設定できないという場合は、クライアントのコマンド ウィンドウにエラー メッセージは表示されません。クライアントとワーカーのプラットフォームが同じではない、クライアントのローカル フォルダーまたはクライアントからマッピングされたフォルダーがワーカーからは同じ方法で使用できない、あるいはフォルダーが非共有ファイル システムにあるといった混合プラットフォーム環境では、このわずかな動作の違いに注意してください。たとえば、MATLAB クライアントを Microsoft® Windows オペレーティング システムで実行している一方で、MATLAB ワーカーはすべて Linux オペレーティング システムで実行している場合、
addpath
の同じ引数は両方のオペレーティング システムでは機能しません。このような場合には、関数pctRunOnAll
を使用してコマンドがすべてのワーカーで実行されるようにできます。クライアントとワーカーのもう 1 つの違いは、
matlabroot
フォルダーの下位フォルダーを表すaddpath
引数がワーカーには設定されないということです。MATLAB インストール ベースは既にワーカーのパスに含まれているということが、ここでは仮定されています。プール内のワーカーに関するaddpath
のルールは以下のとおりです。matlabroot
フォルダーのサブフォルダーはワーカーに送信されない。matlabroot
フォルダーの最初の出現箇所より前に現れるすべてのフォルダーは、ワーカーのパスの先頭に追加される。matlabroot
フォルダーの最初の出現箇所より後に現れるすべてのフォルダーは、ワーカーのパス上でmatlabroot
グループのフォルダーの後に追加される。
たとえば、クライアントの
matlabroot
がC:\Applications\matlab\
であるとします。開いている並列プールに対して以下を実行し、クライアントとすべてのワーカーにパスを設定します。addpath("P1", "P2", "C:\Applications\matlab\T3", "C:\Applications\matlab\T4", "P5", "C:\Applications\matlab\T6", "P7", "P8");
T3
、T4
およびT6
はmatlabroot
のサブフォルダーであるためワーカーのパスには設定されません。したがって、ワーカーに対し、このコマンドによって設定されるパスの該当部分は以下のとおりです。P1 P2 <worker original matlabroot folders...> P5 P7 P8
Macintosh または Linux を使用していて、大規模な並列プールの作成時に問題が発生した場合は、Macintosh と Linux で推奨されるシステムの制限を参照してください。