Main Content

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

codistributor

対話型分散配列に対して対話型分散オブジェクトを作成する

構文

codist = codistributor()
codist = codistributor('1d')
codist = codistributor('1d',dim)
codist = codistributor('1d',dim,part)
codist = codistributor('2dbc')
codist = codistributor('2dbc',lbgrid)
codist = codistributor('2dbc',lbgrid,blksize)

説明

配列の分散には 2 つのスキームがあります。文字ベクトル '1d' で示されるスキームは、指定された単一の添字 (分散次元) に沿って配列を非周期的に分割し、これを分散します。'2dbc' で示されるスキームは、並列行列計算ソフトウェア ScaLAPACK で使用され、2 次元配列にのみ適用されて、矩形の計算ラボ グリッド (ワーカー) 上で 2 つの添字を変化させてブロックを巡回させます。

codist = codistributor() (引数なし) は値がゼロまたは空のパラメーターをもつ既定の対話型分散オブジェクトを返します。その後、このオブジェクトを他の関数の引数として使用して、可能であれば、その関数が既定の分散を使用して対話型分散配列を作成するよう指定できます。以下に例を示します。

Z = zeros(..., codistributor())
R = randn(..., codistributor())

codist = codistributor('1d')codist = codistributor() と同じ結果になります。

また、codist = codistributor('1d',dim) でも、codist.Dimension = dim と既定の分割による対話型分散オブジェクトが形成されます。

codist = codistributor('1d',dim,part) でも、codist.Dimension = dimcodist.Partition = part による対話型分散オブジェクトが形成されます。

codist = codistributor('2dbc') では、2 次元ブロック サイクリック対話型分散オブジェクトが形成されます。'2dbc' 分散についての詳細は、2 次元での分散を参照してください。

codist = codistributor('2dbc',lbgrid) では、lbgrid で定義されたラボ グリッドと既定のブロック サイズにより、2 次元ブロック サイクリック対話型分散オブジェクトが形成されます。

codist = codistributor('2dbc',lbgrid,blksize) では、lbgrid で定義されたラボ グリッドと blksize で定義されたブロック サイズにより、2 次元ブロック サイクリック対話型分散オブジェクトが形成されます。

codist = getCodistributor(D) は、対話型分散配列 D の対話型分散オブジェクトを返します。

2 番目の次元に沿った分散と [1 2 1 2] の分割スキームを使用して、4 つのワーカーに 2 x 6 x 4 の 3 次元配列を作成します。つまり、ワーカー 1 には 2 x 1 x 4 のセグメント、ワーカー 2 には 2 x 2 x 4 のセグメントというように格納していきます。

spmd
    dim = 2; % distribution dimension
    codist = codistributor('1d',dim,[1 2 1 2],[2 6 4]);
    if mod(labindex,2)
        L = rand(2,1,4);
    else
        L = rand(2,2,4);
    end
    A = codistributed.build(L,codist)
end
A

行単位 (最初の次元) での分散と均等な分割スキームによって、4 つのワーカーに 20 行 5 列の対話型分散配列 A を作成します。

spmd
    dim = 1; % distribution dimension
    partn = codistributor1d.defaultPartition(20);
    codist = codistributor('1d',dim,partn,[20 5]);
    L = magic(5) + labindex;
    A = codistributed.build(L,codist)
end
A
R2008b で導入