Main Content

Composite

Composite オブジェクトを作成する

説明

メモ

Composite 変数は通常、値が spmd ステートメントの本体から返されると、クライアントで作成されます。そのため、Composite オブジェクトを直接作成する必要はほとんどありません。Composite 配列の扱いの詳細については、Compositeを参照してください。

C = Composite() は、並列プールのワーカーを使用してクライアント上で Composite オブジェクトを作成します。

Composite オブジェクトには、並列ワーカーに格納された配列への参照が含まれ、ワーカーごとに異なる値が含まれる場合もあります。Composite オブジェクトにはワーカーごとに 1 つのエントリがあり、初期状態ではどのエントリにもデータはありません。エントリにはワーカーごとに異なる値が含まれる場合があります。値は cell 配列インデックスを使用して取得できます。エントリに値を定義するには、インデックスまたは spmd ブロックを使用します。Composite がクライアントに存在し、並列プールが残っていれば、ワーカーにある実際のデータは以降の spmd 実行でも引き続きワーカー上で使用可能です。

Composite オブジェクトが参照する実際のワーカーの数は、プールと既存のすべての Composite オブジェクトのサイズによって決まります。

Composite オブジェクトを手動で構成するには、spmd ステートメントの外で行う必要があります。

C = Composite(nlabs) は、指定された制約を満たす並列プールにあるいくつかのワーカー上で Composite オブジェクトを作成します。nlabs は、整数または Inf を含む、長さ 1 または 2 のベクトルでなければなりません。nlabs が長さ 1 の場合、これは使用するワーカーの正確な数を指定します。nlabs が長さ 2 の場合、これは使用するワーカーの最小数と最大数を指定します。使用される実際のワーカーの数は、並列プールのサイズおよび他の既存の Composite オブジェクトと対応性をもつワーカーの最大数になります。ワーカー数の制約が満たされない場合、MATLAB® ではエラーが発生します。

すべて折りたたむ

この例では、要素が定義されていない Composite オブジェクトを作成した後、クライアントで for ループを使用して値を代入する方法を示します。

p = parpool("local",4);
c = Composite();  % One element per worker in the pool
for w = 1:length(c)
    c{w} = 0;    % Value stored on each worker
end

この例では、spmd ブロックで Composite 要素に代入する方法を示します。

p = parpool("local",4);
c = Composite();
spmd
    c = 0;    % Value stored on each worker
end

この例では、各ワーカーからの値を Composite の要素に代入する方法を示します。

p = parpool("local",4);
c = Composite();
spmd
    c = labindex;
end
c{:}
     1


     2


     3


     4

この例では、分散配列ベクトルを使用して Composite の値を設定する方法を示します。

p = parpool('local',4);
d = distributed([3 1 4 2]); % One integer per worker
spmd
    c = getLocalPart(d);    % Unique value on each worker
end
c{:}
     3


     1


     4


     2

入力引数

すべて折りたたむ

ワーカーの数の制約。ベクトルとして指定します。nlabs は整数または Inf を含む長さ 1 または 2 のベクトルでなければなりません。nlabs が長さ 1 の場合には、使用するワーカーの正確な数を指定します。nlabs のサイズが 2 の場合、これは使用するワーカーの最小数と最大数を指定します。

出力引数

すべて折りたたむ

並列プールのワーカーを使用するクライアント上の Composite 配列。Composite オブジェクトとして返されます。

ヒント

  • Composite オブジェクトは既存の並列プールのワーカーで作成されます。プールがない場合、並列基本設定でプールの自動起動が無効になっていなければ、関数 Composite により新たな並列プールが起動されます。並列プールがなく、Composite による起動もできない場合は、クライアント ワークスペースに 1 行 1 列の Composite オブジェクトが作成されます。

バージョン履歴

R2008a で導入