ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

parpool

クラスターでの並列プールの作成

構文

  • parpool
  • parpool(poolsize)
  • parpool(profilename)
  • parpool(profilename,poolsize)
  • parpool(cluster)
  • parpool(cluster,poolsize)
  • poolobj = parpool(___)

説明

parpool はワーカーのプールに特別なジョブを作成し、並列プールを MATLAB® クライアントに接続することで、MATLAB の並列言語機能 (parfor および spmd) をすべて使用可能にします。

parpool は現在のクラスター プロファイルを使用してプールを起動します。このとき、並列設定で指定されたプール サイズと現在のプロファイルが使用されます。

parpool(poolsize) は設定またはプロファイルで指定されたワーカー数をオーバーライドします。また、ワーカーが使用可能になるまで待機しなければならない場合でも、正確にその数のワーカーからなるプールを起動します。大部分のクラスターでは、起動できるワーカーの最大数が設定されています (ローカル クラスターの場合は 12 です)。プロファイルで MJS (MATLAB ジョブ スケジューラ) クラスターが指定されている場合、parpool は使用するワーカーを、既に実行中のワーカーとその MJS で使用可能なワーカーから確保します。プロファイルでローカルまたはサードパーティ製スケジューラが指定されている場合、parpool はプールのワーカーを起動するようそのスケジューラに指示します。

parpool(profilename) または parpool(profilename,poolsize) により、profilename が示すクラスター プロファイルを使用してワーカー プールが起動されます。

parpool(cluster) または parpool(cluster,poolsize) により、cluster クラスター オブジェクトで指定されたクラスターでワーカー プールが起動されます。

poolobj = parpool(___) はクラスターのプールを示す parallel.Pool オブジェクトをクライアント ワークスペースに返します。このプール オブジェクトを使用すると、プールをプログラムにより削除したり、プールのプロパティにアクセスすることができます。

すべて展開する

既定のプロファイルからのプールの作成

ワーカー数を定義する既定のプロファイルを使用して並列プールを起動します。

parpool

指定したプロファイルからのプールの作成

myProf というプロファイルを使用して、16 個のワーカーからなる並列プールを起動します。

parpool('myProf',16)

ローカル プロファイルからのプールの作成

ローカル プロファイルを使用して、2 個のワーカーからなる並列プールを起動します。

parpool('local',2)

指定したクラスターでのプールの作成

既定のプロファイルで特定されたクラスターを表すオブジェクトを作成し、このクラスター オブジェクトを使用して並列プールを起動します。プールのサイズは既定のプロファイルによって決定されます。

c = parcluster
parpool(c)

プールの作成とファイルの付加

既定のプロファイルを用いて並列プールを起動し、2 つのコード ファイルをワーカーに渡します。

parpool('AttachedFiles',{'mod1.m','mod2.m'})

プール オブジェクトを返しプールを削除

既定のプロファイルを用いて並列プールを作成し、その後でプールを削除します。

poolobj = parpool;

delete(poolobj)

現在のプールのサイズを判定

現在の並列プールにあるワーカーの数を検出します。

poolobj = gcp('nocreate'); % If no pool, do not create new one.
if isempty(poolobj)
    poolsize = 0;
else
    poolsize = poolobj.NumWorkers
end

入力引数

すべて展開する

poolsize - 並列プールのサイズ並列設定または並列プロファイルで設定 (既定の設定)

数値で指定される並列プールのサイズ。

データ型:single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

profilename - クラスターとプロパティを定義するプロファイル現在のプロファイル (既定の設定) | 文字列

文字列として指定するクラスターとプロパティを定義するプロファイル。

例:

データ型:char

cluster - プールを起動するクラスタークラスター オブジェクト

クラスター オブジェクトとして指定するプールを起動するクラスター

例: c = parcluster();

名前/値のペアの引数

オプションの Name,Value の引数ペアをコンマ区切りで指定します。ここで、Name は引数名で Value は対応する値です。Name は単一引用符 (' ') で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペア引数を任意の順番で指定できます。

例: 'AttachedFiles',{'myFun.m'}

'AttachedFiles' - プールに付加するファイル文字列または文字列のセル配列

文字列または文字列のセル配列として指定される、プールに付加するファイル。

parpool はこの引数ペアを使用して並列プールを起動し、指定されたファイルをプールのワーカーに渡します。ここで指定したファイルは、所定の並列プロファイルで指定された AttachedFiles プロパティに追加され、付加ファイルの完全なリストが生成されます。'AttachedFiles' のプロパティ名は大文字小文字を区別するため、表示どおりに指定しなければなりません。

例: {'myFun.m','myFun2.m'}

データ型:char | cell

'SpmdEnabled' - プールで SPMD のサポートが有効であるかどうかを示す指標true (既定の設定) | false

論理値として指定する、プールで SPMD のサポートが有効であるかどうかを示す指標。サポートを無効にできるのは、ローカル クラスターまたは MJS クラスターの場合のみです。parfor の反復ではワーカー間の通信は発生しないため、SPMD のサポートをこの方法で無効にすると、parfor ループの実行中に 1 つまたは複数のワーカーでループの実行が中止されても、並列プールはループの評価を継続することができます。

データ型:logical

出力引数

すべて展開する

poolobj - クライアントから並列プールへのアクセスparallel.Pool オブジェクト

parallel.Pool オブジェクトとして返される、クライアントから並列プールへのアクセス。

詳細

すべて展開する

ヒント

  • デスクトップの左下隅にあるプール ステータス インジケーターは、プールへのクライアント セッション接続とプールのステータスを表します。アイコンをクリックすると、サポートされているプール操作のメニューが表示されます。

    プールが実行中の場合: プールが実行中でない場合:

  • 並列設定で、必要に応じて並列プールを自動作成するよう設定されている場合、parpool コマンドを明示的に呼び出す必要はありません。プール セットアップ時のオーバーヘッド時間が発生するタイミングを制御する場合は、プールを明示的に作成し、そのプールを以降の並列言語構成で使用できます。

  • delete(poolobj) は並列プールをシャットダウンします。並列プールがない場合、spmdparfor はクライアント内で 1 件のスレッドとして実行されます。ただし、並列設定で並列プールが自動起動するよう設定されている場合を除きます。

  • MATLAB エディターを使用して、並列プールに付加されているファイルをクライアント上で更新すると、更新内容は自動的にプール内のワーカーに伝播されます。

  • 並列プールに接続している場合に以下のコマンドをクライアントのコマンド ウィンドウに入力すると、プールのすべてのワーカーでも実行されます。

    これによって、全ワーカー上で作業フォルダーとコマンド検索パスを設定でき、以降の parfor ループが適切なコンテキストで実行されるようになります。

    これらのコマンドがクライアントで機能しない場合、ワーカー上で実行されることはありません。たとえば、addpath でクライアントがアクセスできないフォルダーを指定した場合、この addpath コマンドはワーカーで実行されません。ただし、作業ディレクトリまたはパスがクライアント上では設定でき、いずれかのワーカーで指定どおりには設定できないという場合、クライアントのコマンド ウィンドウにエラー メッセージは表示されません。

    動作におけるこのわずかな違いは、クライアントがワーカーと同じプラットフォームでない、クライアントのローカル フォルダーまたはクライアントからマッピングされたフォルダーがワーカーからは同じ方法で使用できない、あるいはフォルダーが非共有ファイル システムにあるといった混合プラットフォーム環境で問題となる可能性があります。たとえば、MATLAB クライアントを Microsoft® Windows® オペレーティング システムで実行している一方で、MATLAB ワーカーはすべて Linux® オペレーティング システムで実行している場合、addpath の同じ引数は両方のオペレーティング システムでは機能しません。このような場合には、関数 pctRunOnAll を使用してコマンドがすべてのワーカーで実行されるようにできます。

    クライアントとワーカーのもう 1 つの違いは、matlabroot フォルダーの下位フォルダーを表す addpath 引数がワーカーには設定されないということです。MATLAB インストール ベースは既にワーカーのパスに含まれているということが、ここでは仮定されています。プール内のワーカーに関する addpath のルールは以下のとおりです。

    • matlabroot フォルダーのサブフォルダーはワーカーに送信されない。

    • matlabroot フォルダーの最初の出現箇所より前に現れるすべてのフォルダーは、ワーカーのパスの先頭に追加される。

    • matlabroot フォルダーの最初の出現箇所より後に現れるすべてのフォルダーは、ワーカーのパス上で matlabroot グループのフォルダーの後に追加される。

    たとえば、クライアントの matlabrootC:\Applications\matlab\ であるとします。開いている並列プールに対して以下を実行し、クライアントとすべてのワーカーにパスを設定します。

    addpath('P1',
            'P2',
            'C:\Applications\matlab\T3',
            'C:\Applications\matlab\T4',
            'P5',
            'C:\Applications\matlab\T6',
            'P7',
            'P8');

    T3T4 および T6matlabroot のサブフォルダーであるためワーカーのパスには設定されません。したがって、ワーカーに対し、このコマンドによって設定されるパスの該当部分は以下のとおりです。

    P1
    P2
    <worker original matlabroot folders...>
    P5
    P7
    P8

参考

| | | | | | | | |

この情報は役に立ちましたか?