主要内容

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

codistributor2dbc

共存分布式数组的二维块循环分布方案

    说明

    codistributor2dbc 对象定义 codistributed 数组对象的二维块循环分布方案。二维块循环协分配器只能分配二维矩阵。它以分块、循环的方式将工作单元沿着两个下标分布在矩形计算网格上。有关二维块循环分布、默认参数以及块大小和工作单元网格之间关系的完整描述,请参阅 二维分布。并行矩阵计算软件库 ScaLAPACK 采用二维块循环协分配器。

    创建对象

    描述

    codist = codistributor2dbc 使用默认的工作单元网格和块大小创建一个二维块循环的 codistributed2dbc 协同分布器对象。

    示例

    codist = codistributor2dbc(WorkerGrid) 创建一个二维块循环协同分布器对象,具有指定的 WorkerGrid 值和默认块大小。

    codist = codistributor2dbc(WorkerGrid,BlockSize) 使用指定的 WorkerGridBlockSize 值创建一个二维块循环协同分布器对象。

    codist = codistributor2dbc(WorkerGrid,BlockSize,Orientation) 还指定了 Orientation 属性。

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

    codist = codistributor2dbc(WorkerGrid,BlockSize,Orientation,gsize) 创建一个具有全局大小 gsize 的协同分布器对象。

    最终得到的协同分布器对象已经完成。使用以此方式构造的协同分布器,通过 codistributed.build 函数从其本地部分构建共存分布式数组。要使用每个参量的默认值,请将 WorkerGrid 指定为 codistributor2dbc.defaultWorkerGrid、将 BlockSize 指定为 codistributor2dbc.defaultBlockSize 并将 Orientation 指定为 codistributor2dbc.defaultOrientation

    示例

    输入参量

    全部展开

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

    属性

    全部展开

    codistributor2dbc 对象的工作网格,指定为定义工作单元网格的行和列的二元素向量。行数乘以列数必须等于共存分布式数组的工作单元数量。

    codistributor2dbc 对象的块大小,指定为正整数。此属性是与 codistributor2dbc 对象关联的 ScaLAPACK 块大小。

    codistributor2dbc 对象的方向,指定为以下值之一:

    • 'row' – 行方向

    • 'col' - 列方向

    数据类型: char

    对象函数

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

    示例

    全部折叠

    使用 codistributor2dbc 对象创建一个 N×N 的全 1 矩阵。

    N = 1000;
    spmd
        codistr = codistributor2dbc;  
        D = ones(N,codistr);
    end    

    使用完全指定的 codistributor2dbc 对象从其本地部分创建 N×N 共存分布式矩阵。

    N = 1000;

    使用工作单元网格和块大小的默认值,并指定工作单元网格的方向和网格大小。

    spmd
        codistr = codistributor2dbc(...
                     codistributor2dbc.defaultWorkerGrid, ...
                     codistributor2dbc.defaultBlockSize, ...
                     'row',[N,N]); 
    end

    在创建数组本身之前,使用 codistributor 对象上的 globalIndices 方法获取共存分布式数组本地部分的全局索引。使用 length 获取最大全局索引的长度并将其设置为共存分布式数组本地部分的大小。使用codistributed.build函数创建共存分布式数组。

    spmd
        myLocalSize = [length(globalIndices(codistr,1)), ...
                       length(globalIndices(codistr,2))];
        myLocalPart = spmdIndex*ones(myLocalSize);
        D = codistributed.build(myLocalPart,codistr);
    end

    然后使用 spy函数来可视化哪些元素存储在工作单元 2 上。

    spy(D==2)

    稀疏模式显示了存储在工作单元 2 上的数组 D 元素的分布。

    版本历史记录

    在 R2009b 中推出