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 = dim
と codist.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×6×4 の 3 次元配列を作成します。つまり、ワーカー 1 には 2×1×4 のセグメント、ワーカー 2 には 2×2×4 のセグメントというように格納していきます。
spmd dim = 2; % distribution dimension codist = codistributor('1d',dim,[1 2 1 2],[2 6 4]); if mod(spmdIndex,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) + spmdIndex; A = codistributed.build(L,codist) end A
バージョン履歴
R2008b で導入