Main Content

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

ones

创建全 1 的协同分布数组

    说明

    示例

    cO = ones(n,codist) 创建一个 n×n 的共分布矩阵,并使用 codist 来指定数组值在各个工作进程之间的分布。

    codist 指定为 "codistributed" 以使用默认的 codistributor1d 分发方案或者由 codistributor1dcodistributor2dbc 对象定义的分发方案。

    当您在通信作业或 spmd 代码块中创建协同分布数组时,该函数会在每个工作进程上创建一个数组。如果您在通信作业或 spmd 代码块之外创建协同分布数组,则该数组仅存储在创建该协同分布数组的工作进程或客户端上。

    默认情况下,协同分布数组具有底层类型 double

    cO = ones(sz,codist) 创建一个共分布的数组,其中大小向量 sz 定义了 cO 的大小。例如,ones([2 3],"codistributed") 创建一个 2×3 的协同分布数组。

    cO = ones(sz1,...,szN,codist) 创建一个 sz1-by-...-by-szN 协同分布数组,其中 sz1,...,szN 表示每个维度的大小。

    cO = ones(___,datatype,codist) 创建一个与底层类型 datatype 共分布的数组。例如,ones(1,"int8","codistributed") 创建一个共分布的 8 位标量整数 1。您可以将此语法与前面语法中的任何大小参量一起使用。必须在数组大小和数据类型参量后指定 codist

    cO = ones(___,"noCommunication") 创建一个共分布的数组,而不使用工作进程之间的通信。

    当您创建非常大的数组或者您的通信作业或 spmd 代码块使用许多工作进程时,工作进程之间的通信可能会减慢数组的创建速度。使用此语法可以减少工作进程之间的通信所需的时间来提高代码的性能。

    提示

    当您使用此语法时,会跳过一些错误检查步骤。在对代码进行原型设计后(无需指定 "noCommunication"),使用此语法可以提高代码的性能。

    您必须在大小、数据类型和 codist 参量后指定 "noCommunication"

    cO = ones(___,like=p) 使用数组 p 来创建一个共分布的数组。您还可以指定 "noCommunication" 作为函数调用的一部分。

    返回的数组 cI 具有与 p 相同的基础类型、稀疏性和复杂度(实数或复数)。

    示例

    全部折叠

    创建一个 1000×1000 的共分布双精度矩阵,按其第二维(列)分布。

    spmd(4)
    C = ones(1000,"codistributed");
    end

    有 4 个工作进程,每个工作进程包含一个 1000×250 的本地 C 块。

    创建一个 1000×1000 的共分布 uint16 矩阵,按其列分布。

    spmd(4)
        codist = codistributor1d(2,100*[1:spmdSize]);
        C = ones(1000,1000,"uint16",codist)
    end

    每个工作进程包含一个 100×spmdIndex 的本地 C 片段。

    输入参数

    全部折叠

    方阵的大小,指定为整数。

    • 如果 n0,那么 cO 就是空矩阵。

    • 如果 n 为负数,则该函数将其视为 0

    协同分布数组的分布方案,指定为以下选项之一:

    • "codistributed" - 使用默认 codistributor1d 对象定义的默认分发方案。

    • codistributor1d 对象 - 使用 codistributor1d 对象中定义的一维分布方案。要使用默认的一维分布方案,您可以指定不带参量的 codistributor1d 函数。

    • codistributor2dbc 对象 - 使用 codistributor2dbc 对象中定义的二维块循环分布方案。要使用默认的二维块循环分布方案,您可以指定不带参量的 codistributor2dbc 函数。

    每个维度的大小,指定为整数行向量。该向量的每个元素表示相应维度的大小:

    • 如果任意维度的大小为 0,则 cO 就是空数组。

    • 如果任何维度的大小为负数,则该函数将其视为 0

    • 除了第二维度之外,ones 会忽略大小为 1 的尾随维度。例如,ones([3 1 1 1],"codistributed") 生成一个 3×1 的共分布向量。

    示例: sz = [2 3 4] 创建一个 2×3×4 的协同分布数组。

    每个维度的大小,指定为 codistributed 整数值的单独参量。

    • 如果任意维度的大小为 0,则 cO 就是空数组。

    • 如果任何维度的大小为负数,则该函数将其视为 0

    • 除了第二个维度之外,该函数将忽略大小为 1 的尾随维度。

    返回数组的底层数据类型,指定为以下选项之一:

    • "double"

    • "single"

    • "logical"

    • "int8"

    • "uint8"

    • "int16"

    • "uint16"

    • "int32"

    • "uint32"

    • "int64"

    • "uint64"

    要创建的数组的原型,指定为 codistributed 数组。

    如果不指定 datatype,则生成的协同分布数组具有与 p 相同的基础类型、稀疏性和复杂度(实数或复数)。

    版本历史记录

    在 R2006b 中推出