主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

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)

说明

分布数组有两种方案。字符向量 '1d' 表示的方案以非循环、分区的方式沿单个指定下标(分布维度)分布数组。并行矩阵计算软件 ScaLAPACK 采用的方案由 '2dbc' 表示,仅适用于二维数组,并以分块、循环的方式在实验室(工作单元)的矩形计算网格上改变两个下标。

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') 形成一个二维块循环协同分布器对象。有关 '2dbc' 分布的更多信息,请参阅 二维分布

codist = codistributor('2dbc',lbgrid) 形成一个二维块循环共分布器对象,其实验室网格由 lbgrid 定义,并具有默认块大小。

codist = codistributor('2dbc',lbgrid,blksize) 形成一个二维块循环共分布器对象,其实验室网格由 lbgrid 定义,块大小由 blksize 定义。

codist = getCodistributor(D) 返回共存分布式数组 D 的共存分布器对象。

示例

在四台工作单元上,创建一个三维的、2×6×4 的数组,并沿第二个维度分布,以及分区方案 [1 2 1 2]。换句话说,工作单元 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

在四个工作单元上,创建一个 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 中推出