主要内容

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

codistributor1d

R2026b

共存分布式数组的一维分布方案

    描述

    使用 codistributor1d 对象定义共存分布式数组的一维分布方案。一维协分配器以非循环、分区的方式沿单个指定维度(分布维度)分配数组。

    创建对象

    描述

    codist = codistributor1d 使用默认维度和分区返回 codistributor1d 对象。默认维度是共存分布式数组的最后一个非单一维度。默认分区尽可能均匀地沿默认维度分布数组。

    codist = codistributor1d(Dimension) 返回一个一维协分布器对象,用于沿 Dimension 属性指定的维度进行分布。例如,如果 Dimension 为 1,则该函数沿行分布对象。

    示例

    codist = codistributor1d(Dimension,Partition) 还返回一个 1-D 协分配器对象,用于根据 Partition 属性指定的分区向量进行分配。例如,C1 = codistributor1d(1,[1,2,3,4]) 将一个包含 10 行的数组发给四个工作单元,其中第一个工作单元分配一行,第二个工作单元分配两行,第三个工作单元分配三行,第四个工作单元分配四行。

    上述任何语法所得到的协同分布器都是不完整的,因为没有指定它的全局大小。在创建共存分布式数组时,使用以此方式构造的共存分布器作为模板共存分布器作为其他函数的参量。

    codist = codistributor1d(Dimension,Partition,gsize) 返回具有全局大小 gsize 的协同分布器对象。

    您可以使用生成的协同分布器对象通过 codistributed.build 从其本地部分构建一个共存分布式数组。要使用默认维度,请为 Dimension 属性指定 codistributor1d.unsetDimension;该函数从 gsize 派生分布维度,并选择最后一个非单一维度作为默认维度。类似地,要使用默认分区,请为 Partition 属性指定 codistributor1d.unsetPartition;该函数从全局大小和分布维度派生默认分区。

    使用此类共存分布器的共存分布式数组的工作单元 workerIndex 上的本地部分在所有维度上的大小均为 gsize,除了 dimension,其大小为 part(workerIndex)。本地部分具有与整体共存分布式数组相同的类和属性。通过沿维度 dimension 连接各个本地部分,可以重建整个全局数组。

    示例

    输入参量

    全部展开

    共存分布式数组的全局大小,指定为整数。

    属性

    全部展开

    分布维度,指定为整数标量。分布维度指定分布 codistributed 数组的维度。

    分区向量,指定为整数行向量。分区向量指定了 codistributed 数组向工作单元的分布。

    对象函数

    codistributed.cell创建共存分布式元胞数组
    codistributed.colon分布式冒号操作
    codistributed.spalloc为稀疏共存分布式矩阵分配空间
    codistributed.speye创建共存分布式稀疏单位矩阵
    codistributed.sprand创建均匀分布的伪随机值的共存分布式稀疏数组
    codistributed.sprandn创建正态分布的伪随机值的共存分布式稀疏数组
    eye创建共存分布式单位矩阵
    false创建逻辑 0 的共存分布式数组 (false)
    globalIndices共存分布式数组本地部分的全局索引
    Inf创建所有 Inf 值的共存分布式数组
    isComplete如果协同分布器对象完整则为 True
    NaN创建所有 NaN 值的共存分布式数组
    ones创建全 1 共存分布式数组
    rand创建均匀分布的随机数的共存分布式数组
    randn创建正态分布的随机数的共存分布式数组
    true创建逻辑 1 的共存分布式数组 (true)
    zeros创建全零的共存分布式数组

    示例

    全部折叠

    使用 codistributor1d 对象创建一个按行分布的 N×N 矩阵。

    N = 1000;
    spmd
        codistr = codistributor1d(1); % 1st dimension (rows)
        C = ones(N,codistr);
    end

    使用完全指定的 codistributor1d 对象从其本地部分创建 N×N 共存分布式矩阵。然后可视化哪些元素存储在工作单元 2 上。

    从每个工作单元上的全大小数组开始,然后将 myLocalSize 设置为整个数组的默认部分。

    N = 1000;
    spmd
        codistr = codistributor1d( ...
                        codistributor1d.unsetDimension, ...
                        codistributor1d.unsetPartition, ...
                        [N N]);
        myLocalSize = [N N]; % 
        myLocalSize(codistr.Dimension) = codistr.Partition(spmdIndex);
        myLocalPart = spmdIndex*ones(myLocalSize);
        D = codistributed.build(myLocalPart,codistr);
    end
    spy(D==2);

    版本历史记录

    在 R2009b 中推出