Main Content

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

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-by-N 共分布矩阵。

    N = 1000;

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

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

    在创建数组本身之前,使用 codistributor 对象上的 globalIndices 方法获取 codistributed 数组本地部分的全局索引。使用 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 中推出