ドキュメンテーション

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

parpool

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

構文

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

説明

parpool はワーカーのプールに特別なジョブを作成し、並列プールを MATLAB® クライアントに接続することで、MATLAB の並列言語機能 (parfor および spmd) をすべて使用可能にします。可能な場合には、ワーカーの作業フォルダーは MATLAB クライアント セッションの作業フォルダーと一致するように設定されます。

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

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

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

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

parpool(___,Name,Value) は、プールを起動する際に特定のプロパティに対して指定した値を適用します。

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

入力引数

すべて折りたたむ

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

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

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

例:

データ型: char

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

例: c = parcluster();

名前/値のペアの引数

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

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

すべて折りたたむ

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

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

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

データ型: char | cell

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

データ型: logical

出力引数

すべて折りたたむ

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

詳細

すべて折りたたむ

ヒント

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

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

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

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

  • 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 グループのフォルダーの後に追加される。

    たとえば、クライアントの 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

R2013b で導入

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