Main Content

eye

対話型分散単位行列の作成

    説明

    cI = eye(n,codist) は、nn 列の対話型分散単位行列を作成し、codist を使用してワーカー間の配列値の分散を指定します。

    既定の分散スキーム codistributor1d、あるいは codistributor1d オブジェクトまたは codistributor2dbc オブジェクトで定義される分散スキームを使用するには、codist"codistributed" として指定します。

    対話型分散配列を通信ジョブまたは spmd ブロックで作成する場合、この関数は配列をワーカーごとに作成します。対話型分散配列を通信ジョブや spmd ブロック外で作成する場合、配列は対話型分散配列を作成するワーカーまたはクライアントにのみ格納されます。

    既定では、対話型分散配列の基となる型は double です。

    cI = eye(n,m,codist) は、主対角が 1、それ以外が 0 の nm 列の対話型分散単位行列を作成します。たとえば、eye(2,3,"codistributed") は 2 行 3 列の対話型分散配列を作成します。

    cI = eye(sz,codist) は対話型分散単位行列を作成し、サイズ ベクトル szcI のサイズを定義します。たとえば、eye([2 3],"codistributed") も 2 行 3 列の対話型分散単位行列を作成します。

    cI = eye(___,datatype,codist) は、基となるデータ型が datatype の対話型分散単位行列を作成します。たとえば、eye(1,"int8","codistributed") は 8 ビットの対話型分散スカラー整数 1 を作成します。この構文は、前述の構文にある任意のサイズ引数と共に使用できます。配列サイズとデータ型の引数の後に codist を指定する必要があります。

    cI = eye(___,"noCommunication") は、ワーカー間の通信を使用せずに、対話型分散単位行列を作成します。

    非常に大規模な配列を作成する場合、または通信ジョブや spmd ブロックが多数のワーカーを使用する場合は、ワーカー間の通信により配列の作成が遅くなることがあります。この構文を使用すると、ワーカー間の通信に必要な時間が除かれることで、コードのパフォーマンスが改善されます。

    ヒント

    この構文を使用する際は、一部のエラー チェック ステップが省略されます。この構文は、"noCommunication" を指定せずにコードをプロトタイピングした後でコードのパフォーマンスを改善するために使用してください。

    サイズ、データ型、および codist の引数の後に "noCommunication" を指定する必要があります。

    cI = eye(___,like=p) は、配列 p を使用して対話型分散単位行列を作成します。"noCommunication" を関数呼び出しの一部として指定することもできます。

    返される配列 cI の基となる型、スパース性、および実数/複素数は p と同じです。

    すべて折りたたむ

    1000 行 1000 列の対話型分散単位行列を作成し、既定の分散スキームを使用して分散します。

    spmd(4)
        C = eye(1000,"codistributed");
    end

    4 つのワーカーがある場合、各ワーカーには C の 1000 行 250 列のローカル ピースが格納されます。

    列単位で分散される 1000 行 1000 列の uint16 の対話型分散単位行列を作成します。codistributor1d オブジェクトを使用して分散スキームを定義します。

    spmd(4)
        codist = codistributor1d(2,100*[1:spmdSize]);
        C = eye(1000,1000,"uint16",codist)
    end
    Worker 1: 
      This worker stores C(:,1:100).
              LocalPart: [1000x100 uint16]
          Codistributor: [1x1 codistributor1d]
    Worker 2: 
      This worker stores C(:,101:300).
              LocalPart: [1000x200 uint16]
          Codistributor: [1x1 codistributor1d]
    Worker 3: 
      This worker stores C(:,301:600).
              LocalPart: [1000x300 uint16]
          Codistributor: [1x1 codistributor1d]
    Worker 4: 
      This worker stores C(:,601:1000).
              LocalPart: [1000x400 uint16]
          Codistributor: [1x1 codistributor1d]

    各ワーカーには C の 1000 行 100 * spmdIndex 列のローカル ピースが格納されます。

    サイズ ベクトルを指定して、同じ対話型分散配列を取得することもできます。

    spmd(4)
        C = eye([1000 1000],"uint16",codist);
    end

    まず、対話型分散配列を作成します。基となるデータ型を single として指定し、既定の分散スキームを使用します。

    spmd(4)
    p = eye(1000,"single","codistributed");
    end

    サイズとデータ型が p と同じである、新しい対話型分散配列を作成します。2 次元ブロックサイクリックの関数 codistributor2dbc を使用して、分散スキームを定義します。

    spmd
    C = eye(size(p),codistributor2dbc,"noCommunication",like=p);
    end

    入力引数

    すべて折りたたむ

    単位行列の最初の次元のサイズ。整数として指定します。

    • n が唯一の整数入力引数である場合、cI は n 行 n 列の正方の対話型分散単位行列になる。

    • n0 の場合、cI は空行列となる。

    • n が負の場合、関数はこれを 0 として扱う。

    対話型分散配列の分散スキーム。以下のオプションのいずれかとして指定します。

    • "codistributed" — 既定の codistributor1d オブジェクトで定義された既定の分散スキームを使用します。

    • codistributor1d オブジェクト — codistributor1d オブジェクトで定義された 1 次元分散スキームを使用します。既定の 1 次元分散スキームを使用する場合、引数なしで関数 codistributor1d を指定できます。

    • codistributor2dbc オブジェクト — codistributor2dbc オブジェクトで定義された 2 次元ブロックサイクリック分散スキームを使用します。既定の 2 次元ブロックサイクリック分散スキームを使用する場合、引数なしで関数 codistributor2dbc を指定できます。

    対話型分散単位行列の 2 番目の次元のサイズ。整数として指定します。

    • m0 の場合、cI は空行列となる。

    • m が負の場合、関数はこれを 0 として扱う。

    データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    各次元のサイズ。整数の行ベクトルとして指定します。このベクトルの各要素は、対応する次元のサイズを示します。

    • いずれかの次元のサイズが 0 の場合、cI は空配列となる。

    • いずれかの次元のサイズが負の場合、関数はこれを 0 として扱う。

    • 2 番目より後の次元については、サイズ 1 の後続の次元を eye は無視する。たとえば、eye([3 1 1 1],"codistributed") は 3 行 1 列の対話型分散単位行列を生成します。

    例: sz = [2 3 4] は 2×3×4 の対話型分散配列を作成します。

    データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    返される配列の基となるデータ型。以下のオプションのいずれかとして指定します。

    • "double"

    • "single"

    • "logical"

    • "int8"

    • "uint8"

    • "int16"

    • "uint16"

    • "int32"

    • "uint32"

    • "int64"

    • "uint64"

    作成する配列のプロトタイプ。codistributed 配列として指定します。

    datatype を指定しない場合、結果の対話型分散配列の基となる型、スパース性、および実数/複素数は p と同じです。

    バージョン履歴

    R2006b で導入