Main Content

spmdCat

spmd ワーカー上の配列を連結する

R2022b 以降

    説明

    B = spmdCat(A) は、spmd ブロックまたは通信ジョブを実行している各ワーカー上で定義されている配列 A を水平方向に連結します。

    parforparfeval、または parfevalOnAll を使用して並列プールでコードを実行する場合、各ワーカーは独立しており、相互の通信は行われません。これらのワーカー上で spmdCat を使用した場合、結果はクライアント上で spmdCat を使用した場合と同じになります。

    spmdCat は、A を 2 番目の次元に沿って連結できる場合にのみ使用できます。

    この関数は、配列を 2 番目の次元に沿って連結したうえで、その結果をすべてのワーカーに保存します。関数は A の値を各ワーカーから取得し、結果をワーカー インデックスの順序で連結します。ワーカーのインデックスを取得するには、関数 spmdIndex を使用します。たとえば、spmdCat(spmdIndex)1:spmdSize を返します。ここで、spmdSize は現在の spmd ブロックまたは通信ジョブを実行しているワーカーの数です。

    現在の spmd ブロックを 1 つのワーカーが実行している場合、BA と等しくなります。

    B = spmdCat(A,dim) は、A を次元 dim に沿って連結します。

    spmdCat は、すべての配列のサイズに互換性があるときに、A を次元 dim に沿って連結する場合にのみ使用できます。配列のサイズに互換性があるのは、操作次元 dim 以外の次元の長さが一致する場合です。

    B = spmdCat(A,dim,destination) は、A を連結し、結果を 1 つのワーカーにのみ保存します。

    すべて折りたたむ

    この例では、spmdCat を使用して、spmd ブロックの各ワーカー上に保持されているスカラーを連結する方法を説明します。

    4 つのワーカーをもつ並列プールを作成します。

    parpool(4);

    spmd ブロックを作成します。既定では、プール内の各ワーカーは spmd ブロックを実行します。各ワーカー上で spmdIndex から返された値を A として保存した後、spmdCat を使用して、各ワーカーで定義されている A の値を連結します。

    保存先を指定しない限り、関数 spmdCat は連結の結果を各ワーカーに保存します。クライアント上での結果は Composite オブジェクトです。結果を取得するには、Composite オブジェクトにインデックスを付けます。

    spmd
        B = spmdCat(spmdIndex);
    end
    B{1}
    ans =
         1     2     3     4

    入力引数

    すべて折りたたむ

    入力配列。スカラー、ベクトル、行列、多次元配列、table、timetable、または連結をサポートする任意の MATLAB 変数として指定します。

    例: A = magic(3)

    次元。正の整数として指定します。たとえば、すべてのワーカー上で A が 2 行 2 列の行列である場合、spmdCat(A,1) は A を垂直方向に連結して 2N 行 2 列の行列を返します。ここで、N は現在の spmd ブロックを実行しているワーカーの数です。spmdCat(A,2) を呼び出すと連結が水平方向に行われ、2 行 2N 列の行列が返されます。

    table または timetable 入力の場合、dim1 または 2 でなければなりません。

    保存先ワーカーのインデックス。正の整数として指定します。この入力の値は、現在の spmd ブロックまたは通信ジョブにおける関数 spmdSize の出力以下でなければなりません。

    この入力を指定した場合、関数は B の値を、このインデックスをもつワーカーにのみ保存します。B 出力は、spmdCat を実行するすべてのワーカー上で定義されたままとなります。インデックスが destination と等しいワーカーにおいて、B は連結の結果となります。他のすべてのワーカーでは、B[] です。

    出力引数

    すべて折りたたむ

    出力配列。A と同じ型の任意の MATLAB 変数として返されます。

    destination を指定した場合、B は、インデックスが destination と等しいワーカー上での連結の結果となります。他のすべてのワーカーでは、B[] です。

    アルゴリズム

    次の図は、spmdCat(A) を呼び出したときに、関数 spmdCatA を他のワーカー上の値とどのように連結するかを示しています。

    Diagram showing how four workers combine arrays specified as A into a single array, B.

    拡張機能

    バージョン履歴

    R2022b で導入