Main Content

gcat

(非推奨) spmd ワーカー上の配列を連結する

    gcat は推奨されません。代わりに spmdCat を使用してください。詳細については、バージョン履歴を参照してください。

    説明

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

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

    gcat は、各ワーカー上で定義されている配列 A を 2 番目の次元に沿って連結できる場合にのみ使用できます。

    gcat は、配列を 2 番目の次元に沿って連結したうえで、その結果をすべてのワーカーに保存します。A の値は各ワーカーから取得され、labindex の順序で連結されます。たとえば、gcat(labindex)1:numlabs を返します。

    numlabs1 と等しい場合、BA と等しくなります。

    B = gcat(A,dim) は、各ワーカー上で定義されている配列 A を次元 dim に沿って連結します。

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

    B = gcat(A,dim,destination) は、各ワーカー上で定義されている配列 A を連結し、結果を 1 つのワーカーのみに保存します。

    すべて折りたたむ

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

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

    parpool(4);

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

    gcat を使用すると、結果は既定で各ワーカーに保存されます。クライアント上では、結果は Composite 配列です。結果を取得するには、Composite 配列にインデックスを付けます。

    spmd
        B = gcat(labindex);
    end
    B{1}
    ans =
         1     2     3     4

    入力引数

    すべて折りたたむ

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

    例: A = magic(3)

    それに沿って操作を行う次元。正の整数スカラーとして指定します。たとえば、すべてのワーカー上で A が 2 行 2 列の行列である場合、gcat(A,1) は垂直方向に連結を行って 2*numlabs 行 2 列の行列を作成します。gcat(A,2) は、水平方向に連結を行って 2 行 2*numlabs 列の行列を作成します。

    既定値は 2 です。

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

    保存先ワーカーのインデックス。正の整数スカラーとして指定します。値は、現在の spmd ブロックまたは通信ジョブで numlabs を使用する際に返される、指定の値以下でなければなりません。指定した場合、B = gcat(A,dim,destination) を実行して得られる結果 B は 1 つのワーカー上にのみ保存されます。配列 B は、gcat を実行するすべてのワーカー上で定義されたままとなります。labindexdestination と等しいワーカーにおいて、C は連結の結果となります。他のすべてのワーカーでは、C[] です。

    出力引数

    すべて折りたたむ

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

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

    アルゴリズム

    gcat(A) を使用すると、各ワーカー上の A の値が他のワーカー上の値と連結されます。

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

    バージョン履歴

    R2006b で導入

    すべて折りたたむ

    R2022b: gcat は非推奨

    spmd ブロック内で使用するものであることがわかるように、gcat の名前が spmdCat に変更されました。gcat は引き続き使用できますが、非推奨になっています。コードを更新するには、gcat のすべてのインスタンスを spmdCat に置き換えてください。gcat を削除する予定はありません。

    参考