このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
parforOptions
parfor
のオプション セット
説明
は、プール オブジェクト opts
= parforOptions(pool
)pool
を使用して parfor
のオプションのセットを作成します。
複数のプールを作成する場合は、この構文を使用して、どのプールで parfor
ループを実行するかを指定します。
ヒント
parfor
ループを実行する際、使用可能な並列プールがあれば、MATLAB® は自動でそれを使用してループを実行します。
既定のクラスター プロファイルまたは使用可能な並列プールを使って parfor
ループを実行するだけでよい場合は、parforOptions
の代わりに構文 parfor loopVar=initVal:endval; statements; end
を使用することを検討してください。
は、1 つ以上の名前と値の引数を使用して、opts
= parforOptions(___,Name,Value
)parfor
のオプションのセットを作成します。たとえば、parforOptions(pool,"MaxNumWorkers",M)
を使用すると、プール オブジェクト pool
と最大 M
個のワーカーを使用して parfor
ループが実行されます。名前と値の引数は、他のすべての入力引数の後で指定します。
例
並列プールを使用せずにクラスター上で parfor
を実行
関数 parcluster
を使用してクラスター オブジェクトを作成し、このクラスター オブジェクトを使用して parfor
のオプション セットを作成します。既定で、parcluster
は既定のクラスター プロファイルを使用します。既定のプロファイルは、MATLAB® の [ホーム] タブの [並列]、[並列環境を選択] で確認します。
cluster = parcluster; opts = parforOptions(cluster);
クラスター内で直接 parfor
の計算を実行するには、parfor
オプションを 2 番目の入力引数として parfor
に渡します。
この方法を使用すると、parfor
はクラスター内の使用可能なすべてのワーカーを使用でき、ワーカーはループの完了後すぐに使用可能になります。この方法は、クラスターが並列プールをサポートしていない場合にも役立ちます。
values = [3 3 3 7 3 3 3]; parfor (i=1:numel(values),opts) out(i) = norm(pinv(rand(values(i)*1e3))); end
必要以上に長い時間ワーカーを使用することなく、大規模なクラスター上で parfor を実行するには、この構文を使用します。
parfor
の範囲の分割の制御
parforOptions
を使用して、parfor
が反復をワーカー用のサブレンジに分割する方法を制御できます。範囲の分割を制御することで、parfor
ループのパフォーマンスを最適化できます。最良のパフォーマンスを得るには、次のようにサブレンジを分割するようにします。
サブレンジのスケジューリングのオーバーヘッドよりも計算時間が長くなる程度に大きい
すべてのワーカーをビジー状態に維持するために十分なサブレンジ数が存在する程度に小さい
反復を固定サイズのサブレンジに分割するには、parfor
のオプション セットを作成し、'RangePartitionMethod'
を 'fixed'
に設定し、'SubrangeSize'
を使用してサブレンジ サイズを指定します。
opts = parforOptions(parcluster,'RangePartitionMethod','fixed','SubrangeSize',2);
parfor
オプションを 2 番目の入力引数として parfor
に渡します。この場合、parfor
は反復を 2
回の反復からなる 3 つのグループに分割します。
values = [3 3 3 3 3 3]; parfor (i=1:numel(values),opts) out(i) = norm(pinv(rand(values(i)*1e3))); end
反復を異なるサイズのサブレンジに分割するには、'RangePartitionMethod'
の名前と値のペアに関数ハンドルを渡します。この関数はサブレンジ サイズのベクトルを返さなければならず、その合計は反復回数と等しくなければなりません。この構文の詳細については、RangePartitionMethodを参照してください。
opts = parforOptions(parcluster,'RangePartitionMethod', @(n,nw) [2 1 1 2]);
parfor
オプションを 2 番目の入力引数として parfor
に渡します。この場合、parfor
は反復を 2
、1
、1
、および 2
回の反復からなる 4 つのグループに分割します。
values = [3 3 7 7 3 3]; parfor (i=1:numel(values),opts) out(i) = norm(pinv(rand(values(i)*1e3))); end
並列プール上での parfor
の実行および制御オプション
parforOptions
を使用して、並列プールのワーカー上で parfor
を実行できます。parfor-
ループ用に固定数のワーカーを予約する場合は、この方法を使用します。また、parfor
がワーカー用に反復を分割する方法をより細かく制御できます。
関数 parpool
を使用して並列プールを作成します。既定で、parpool
は既定のプロファイルを使用します。既定のプロファイルは、MATLAB の [ホーム] タブの [並列]、[並列環境を選択] で確認します。並列プール オブジェクトを使用して parfor
のオプション セットを作成し、オプションを指定します。たとえば、分割方法として固定サイズ 2
のサブレンジを指定します。
p = parpool;
Starting parallel pool (parpool) using the 'Processes' profile ... Connected to the parallel pool (number of workers: 6).
opts = parforOptions(p,'RangePartitionMethod','fixed','SubrangeSize',2);
parfor
のオプションを 2 番目の入力引数として関数 parfor
に渡します。parfor
は並列プール上でループ本体を実行し、opts
に従って反復を分割します。
values = [3 3 3 3 3 3]; parfor (i=1:numel(values),opts) out(i) = norm(pinv(rand(values(i)*1e3))); end
parfor
のワーカーにファイルを転送
並列プールを使用して、あるいは使用せずに parfor
を実行するときに、MATLAB は既定でループ本体の依存関係の分析を自動的に実行します。MATLAB はステートメントを実行する前に、必要なファイルをワーカーに転送します。場合によっては、これらのファイルを明示的にワーカーに転送しなければならないことがあります。詳細については、プログラムの依存関係の特定を参照してください。
並列プールなしで parfor
を使用する場合、parforOptions
を使用してファイルを転送します。parcluster
オプションを使用してクラスター オブジェクトを作成します。関数 parforOptions
を使用し、このクラスター オブジェクトを指定して parfor
のオプション セットを作成します。ファイルをワーカーに転送するには、'AttachedFiles'
の名前と値のペアを使用します。
cluster = parcluster; opts = parforOptions(cluster,'AttachedFiles',{'myFile.dat'});
parfor
のオプションを 2 番目の入力引数として関数 parfor
に渡します。ワーカーはループ本体で必要なファイルにアクセスできます。
parfor (i=1:2,opts) M = csvread('myFile.dat',0,2*(i-1),[0,2*(i-1),1,1+2*(i-1)]); out(i) = norm(rand(ceil(norm(M))*1e3)); end
入力引数
cluster
— クラスター
parallel.Cluster
オブジェクト
クラスター。parallel.Cluster
オブジェクトとして指定します。クラスター オブジェクトを作成するには、parcluster
を使用します。
例: parcluster('Processes');
pool
— プール
parallel.Pool
オブジェクト
プール。parallel.Pool
オブジェクトとして指定します。
並列プールを作成するには、
parpool
を使用。バックグラウンド プールを取得するには、
backgroundPool
を使用。
例: parpool('Processes');
例: backgroundPool;
名前と値の引数
オプションの引数ペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。
R2021a 以前は、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みました。
例: opts = parforOptions(cluster,"AttachedFiles","myFile.dat");
RangePartitionMethod
— 反復をサブレンジに分割する方法
"auto"
(既定値) | "fixed"
| 関数ハンドル
反復をサブレンジに分割する方法。"auto"
、"fixed"
、または関数ハンドルとして指定します。サブレンジは、parfor
がワーカー上でグループとして実行する、連続したループ反復のブロックです。この引数は、反復をワーカー間で分散する方法を指定して parfor
ループのフォーマンスを最適化するために使用します。
RangePartitionMethod
が"auto"
である場合、または値を指定しない場合、parforOptions
はparfor
ループの反復を可変サイズのサブレンジに分割し、さまざまなparfor
ループの適切なパフォーマンスを追求します。RangePartitionMethod
が"fixed"
の場合、parforOptions
はparfor
ループの反復を固定サイズのサブレンジに分割します。この方法を使用する場合は、名前と値の引数SubrangeSize
も使用して、サブレンジのサイズを指定する必要があります。RangePartitionMethod
が関数ハンドルの場合、parforOptions
はその関数ハンドルを使用してparfor
ループの反復を固定サイズのサブレンジに分割します。この関数は、関数ハンドルを
sizes = customFcn(n,nw)
として実行します。n
はparfor
ループ内の反復の数。nw
はループの実行に使用できるワーカーの数。ループの実行にプールを使用する場合、
nw
は並列プール内のワーカー数です。ループの実行にプールなしでクラスターを使用する場合、nw
はクラスターのNumWorkers
プロパティです。sizes
はサブレンジ サイズの整数ベクトル。n
とnw
の任意の値について、ベクトルsizes
の合計はn
と等しくなる必要があります。
例: parforOptions(cluster,"RangePartitionMethod","auto")
例: parforOptions(cluster,"RangePartitionMethod",@(n,nw) ones(1,n))
SubrangeSize
— サブレンジ内の最大反復回数
正の整数スカラー
サブレンジ内の最大反復回数。正の整数スカラーとして指定します。サブレンジは、parfor
がワーカー上でグループとして実行する、連続したループ反復のブロックです。
この引数を使用する際は、RangePartitionMethod
引数を "fixed"
として指定する必要があります。
例: parforOptions(cluster,"RangePartitionMethod","fixed","SubrangeSize",5)
AdditionalPaths
— 各ワーカーの MATLAB 検索パスに追加するフォルダー
文字ベクトル | string スカラー | string 配列 | cell 配列
parfor
を実行している各ワーカーの MATLAB 検索パスに追加するフォルダー。文字ベクトル、string スカラー、string 配列、または文字ベクトルの cell 配列として指定します。
既定値は空の cell 配列です。
フォルダーは、parfor
ループを実行する際にワーカーの検索パスに追加されます。parfor
ループが終了すると、これらのフォルダーはワーカーの検索パスから削除されます。
クライアントとワーカーが同じフォルダーに対し異なるパスをもつ場合、ワーカーのパスを使用してフォルダーを指定します。たとえば、フォルダーへのパスがクライアントでは /shared/data
、ワーカーでは /organization/shared/data
である場合は、"/organization/shared/data"
を指定します。
"../myFolder"
のような相対パスを指定する場合、パスはワーカーの現在の作業ディレクトリを基準として解決されます。
AdditionalPaths
を指定すると、クライアントからワーカーへのファイルの不必要なコピーが回避されます。AdditionalPaths
は、ワーカーでファイルが使用可能な場合のみ指定します。ファイルが使用可能でない場合は、AttachedFiles
を使用してファイルをワーカーに送信します。
例: opts = parforOptions(cluster,"AdditionalPaths",["/additional/path1","/additional/path2"])
AttachedFiles
— 各ワーカーに送信するファイルとフォルダー
文字ベクトル | string スカラー | string 配列 | cell 配列
parfor
ループを実行している各ワーカーに送信するファイルとフォルダー。文字ベクトル、string スカラー、string 配列、または文字ベクトルの cell 配列として指定します。
既定値は空の cell 配列です。
ファイルとフォルダーは parfor
ループの実行時にワーカーに送信されます。parfor
ループが終了すると、これらのファイルとフォルダーは各ワーカーのファイル システムから削除されます。
"../myFolder"
のような相対パスを指定する場合、パスはクライアントの現在の作業ディレクトリを基準として解決されます。
ワーカーでファイルが使用可能な場合は、代わりに AdditionalPaths
を指定します。AdditionalPaths
を指定すると、クライアントからワーカーへのファイルの不必要なコピーが回避されます。
AutoAddClientPath
— クライアントのパスをワーカーに送信するフラグ
true
(既定値) | false
クライアントのパスをワーカーに送信するフラグ。true
または false
として指定します。
AutoAddClientPath
を true
に指定した場合、parfor
ループを実行する際に、ユーザーが追加したエントリが各ワーカーのパスに追加されます。parfor
ループが終了すると、これらのエントリは各ワーカーのパスから削除されます。
AutoAttachFiles
— ファイルを自動的にワーカーにコピーするフラグ
true
(既定値) | false
ファイルを自動的にワーカーにコピーするフラグ。true
または false
として指定します。
計算をワーカーにオフロードするとき、クライアントでの計算に必要なファイルもすべてワーカー上で使用可能でなければなりません。AutoAttachFiles
を true
に指定すると、クライアントはそのようなファイルを自動的に検出して追加しようとします。AutoAttachFiles
を false
に指定すると、クライアントでの自動検出がオフになります。自動検出ではすべてのファイルを検索できない場合や、クライアントからワーカーへのファイルの送信速度が遅い場合は、以下の引数を使用します。
ワーカー上でアクセスできないフォルダーにファイルが含まれている場合は、
AttachedFiles
引数を使用してファイルを指定します。クラスターによって、指定した各ファイルがクライアントからワーカーへコピーされます。ワーカー上でアクセスできるフォルダーにファイルが含まれている場合は、代わりに
AdditionalPaths
引数を使用できます。AdditionalPaths
引数を使用して各ワーカーの MATLAB 検索パスにパスを追加し、クライアントからワーカーへのファイルの不必要なコピーを回避します。
自動的に検出されたファイルは、parfor
ループを実行する際にワーカーに送信されます。parfor
ループが終了すると、これらのファイルとフォルダーは各ワーカーのファイル システムから削除されます。
MaxNumWorkers
— ワーカーの最大数
正の整数スカラー
ワーカーの最大数。正の整数スカラーとして指定します。
既定値は Inf
です。
MaxNumWorkers
を有限の正の整数として指定した場合、parfor
ループは最大でMaxNumWorkers
個のワーカーを使って実行される。MaxNumWorkers
をInf
に指定した場合、parfor
ループは使用可能なワーカーをすべて使って実行される。
バージョン履歴
R2019a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)