ドキュメンテーション

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

Composite

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

構文

C = Composite()
C = Composite(nlabs)

説明

C = Composite() は並列プールのワーカーを使用してクライアント上で Composite オブジェクトを作成します。この Composite オブジェクトが参照する実際のワーカーの数は、プールと既存のすべての Composite オブジェクトのサイズによって決まります。一般に、Composite オブジェクトは spmd ステートメントの外部で作成する必要があります。

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

Composite オブジェクトは各ラボにつき 1 エントリをもち、初期化時には各エントリにデータが入っていません。エントリに値を定義するには、インデックスまたは spmd ブロックを使用します。

以下の例はすべて、次のステートメントで開かれた 4 個のワーカーからなるローカル並列プールを使用しています。

p = parpool('local',4);

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

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 要素を代入する方法を示します。

c = Composite();
spmd
    c = 0;    % Value stored on each worker
end

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

c = Composite();
spmd
    c = labindex;
end
c{:}
     1


     2


     3


     4

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

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

ヒント

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