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 クライアント セッションの作業フォルダーと一致するように MATLAB で最初に設定されます。以降にクライアントで以下のコマンドを実行すると、そのコマンドも 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 で推奨されるシステムの制限を参照してください。