主要内容

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

codistributed

访问并行池中分布在工作单元之间的数组元素

    说明

    并行池中在工作单元之间分区的数组可以作为 codistributed 数组对象从工作单元进行访问。在 spmd 语句内或从通信作业的任务函数内创建的工作程序上的共存分布式数组工作单元可作为客户端上的分布式数组进行访问。

    创建对象

    使用 codistributed 函数或 codistributed.build 函数创建 codistributed 对象。

    描述

    C = codistributed(X) 使用默认分布方案分布一个复制数组 X 并返回一个共存分布式数组 CX 必须是复制数组,即它必须在所有工作单元上具有相同的值。数组 C 的大小与 X 的大小相同。

    示例

    C = codistributed(X,workerIndex) 使用默认的协同分布器分发驻留在由 X 标识的工作单元上的本地数组 workerIndex。本地数组 X 必须在所有工作单元上定义,但该函数仅使用 WorkerIndex 来构造 Csize(C)X 的大小相同。

    C = codistributed(X,codist) 使用 codistributor X 定义的分布方案来分布一个复制数组 codistX 必须是复制数组,也就是说,它必须在所有工作单元上具有相同的值。C 的大小与 X 的大小相同。有关构造协同分布器对象的信息,请参阅 codistributor1dcodistributor2dbc

    示例

    C = codistributed(X,workerIndex,codist) 使用协同分布器 X 分发驻留在 workerIndex 标识的工作单元上的本地数组 codist。本地数组 X 必须在所有工作单元上定义,但该函数仅使用 WorkerIndex 来构造 Csize(C)X 的大小相同。

    C = codistributed(C1,codist) 接受已共存分布的数组 C1,并根据共存分布器 C 定义的分布方案将其重新分布到 codist 中。此语法相当于 C = redistribute(C1,codist)。如果 C1 的现有分布方案与 codist 中指定的分布方案相同,则结果 C 与输入 C1 相同。

    输入参量

    全部展开

    要分发的数组,指定为数组。

    协同分布器,指定为 codistributor1dcodistributor2dbc 对象。有关创建协同分布器的信息,请参阅 codistributor1dcodistributor2dbc。要使用默认分布方案,您可以指定一个不带参量的 codistributor 构造函数。

    存储本地数组的工作单元的索引,指定为正整数标量。

    数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    要重新分配的共存分布式数组,指定为 codistributed 数组。

    输出参量

    全部展开

    存储在并行池中各工作单元上的共存分布式数组。

    对象函数

    gather将分布式数组、Composite 对象或 gpuArray 对象传输到本地工作区
    getCodistributor现有共存分布式数组的共存分布器对象
    getLocalPart共存分布式数组的本地部分
    globalIndices共存分布式数组本地部分的全局索引
    Inf创建所有 Inf 值的共存分布式数组
    iscodistributed对于共存分布式数组而言为 True
    redistribute使用另一种分布方案重新分配共存分布式数组

    用于共存分布式数组的对象函数太多,无法在此列出。大多数与内置的 MATLAB® 函数相似且行为相同。有关对象函数的完整列表,请参阅 使用分布式数组运行 MATLAB 函数

    在对象函数中,有几个用于检查数组本身的特性。大多数行为类似于同名的 MATLAB 函数。

    iscodistributed对于共存分布式数组而言为 True
    isreal确定数组是否使用复数存储
    isUnderlyingType确定输入是否有指定的基础数据类型
    length最大数组维度的长度
    ndims数组维度数目
    size数组大小
    underlyingType确定数组行为的基础数据的类型

    示例

    全部折叠

    使用默认分布方案创建一个 1000×1000 的共存分布式数组 C1

    parpool('Processes',4)
    spmd
        N = 1000;
        X = magic(N);          
        C1 = codistributed(X); 
    end

    数组 X 在每个工作单元上都有复制,而数组 C1 在工作单元之间进行分区。

    创建一个 1000×1000 的共存分布式数组 C2,按行分布(在第一个维度上),并使用 codistributor1d 分布方案。

    spmd
        N = 1000;
        X = magic(N);
        C2 = codistributed(X,codistributor1d(1));
    end

    提示

    gather 函数执行 codistributed 的逆操作。使用 gather 函数将共存分布式数组检索到客户端工作空间中。

    替代功能

    您还可以使用任何这些 MATLAB 函数从 spmd 代码或通信作业任务明确创建一个共存分布式数组。

    版本历史记录

    在 R2008b 中推出