MPIBlockVector

(类来自 pyomo.contrib.pynumero.sparse.mpi_block_vector)

class pyomo.contrib.pynumero.sparse.mpi_block_vector.MPIBlockVector(nblocks, rank_owner, mpi_comm, assert_correct_owners=False)[source]

基础类:BaseBlockVector, ndarray

并行结构化向量接口。此接口可用于对由向量组成的向量执行并行操作。主要思想是在不同的处理器中分配向量,并在必要时进行相应的并行调用。

_rank_owner

1D-数组,表示每个块的处理器的所有权。一个块可以由单个处理器或所有处理器拥有。由所有处理器拥有的块的所有权为-1。由单个处理器拥有的块具有所有权等级,其中等级=MPI.COMM_WORLD.Get_rank()

Type:

numpy.ndarray

_mpiw

来自MPI空间的通信器。通常是MPI.COMM_WORLD

Type:

MPI通信器

_block_vector

内部块向量。属于此处理器的块存储在_block_vector中。不属于此处理器的块为空,并存储为numpy.zeros(0)

Type:

BlockVector

_owned_mask

1D-数组,指示一个块是否属于此处理器。虽然 _rank_owner 告诉每个块由哪个处理器拥有,_owned_mask 告诉 一个块是否由此处理器拥有。由所有人拥有的块 (即所有权 = -1)在 _owned_mask 中为 True

Type:

numpy.ndarray 布尔型

_owned_blocks

包含此处理器拥有的块索引的一维数组。这包括所有权为-1的块。

Type:

numpy.ndarray

_unique_owned_blocks

1D-array 包含仅由此处理器拥有的块索引。这不包括所有权为 -1 的块。

Type:

numpy.ndarray

_brow_lengths

大小为nblocks的一维数组,指定了MPIBlockVector中每个条目的长度。这在所有处理器中都是相同的。

Type:

numpy.ndarray

_undefined_brows

一组块索引,这些块的维度尚未设置(即,这些块仍为None)。使用BlockVectors进行操作时,要求所有条目都不为None。

Type:

set

注释

这是pyomo.contrib.pynumero.sparse.BlockVector的并行实现

Parameters:
  • nblocks (int) – 块向量中包含的块数

  • rank_owner (array_like) – 大小为nblocks的数组。每个条目定义了每个块的所有权。 有两种类型的所有权。由所有处理器拥有的块, 和由单个处理器拥有的块。如果一个块由所有 处理器拥有,则其所有权为-1。否则,如果一个块由 单个处理器拥有,则其所有权等于该处理器的 排名。

  • mpi_com (MPI通信器) – 一个MPI通信器。通常是MPI.COMM_WORLD

__init__(nblocks, rank_owner, mpi_comm, assert_correct_owners=False)[源代码]

方法

__init__(nblocks, rank_owner, mpi_comm[, ...])

all([axis, out, keepdims])

如果所有元素评估为True,则返回True。

any([axis, out, keepdims])

如果所有元素的评估结果都为True,则返回True。

argmax([axis, out, keepdims])

返回沿给定轴的最大值的索引。

argmin([axis, out, keepdims])

返回沿给定轴的最小值的索引。

argpartition(kth[, axis, kind, order])

返回将分区此数组的索引。

argsort([axis, kind, order])

返回将对此数组进行排序的索引。

astype(dtype[, order, casting, subok, copy])

数组的副本,转换为指定类型。

block_sizes([copy])

返回一个一维数组,包含此MPIBlockVector中各个块的大小

broadcast_block_sizes()

将所有块的大小发送到所有处理器。

byteswap([inplace])

交换数组元素的字节

choose(choices[, out, mode])

使用索引数组从一组选择中构造一个新数组。

clip([min, max, out])

返回MPIBlockVector,其值限制在[min, max]之间。

clone([value, copy])

返回此MPIBlockVector的副本

compress(condition[, axis, out])

返回每个子块的选定切片。

conj()

对所有元素进行复共轭。

conjugate()

对所有元素进行复共轭。

copy([order])

返回MPIBlockVector的副本

copy_structure()

返回一个填充了零的MPIBlockVector结构的副本

copyfrom(other)

将其他条目复制到此MPIBlockVector中

copyto(other)

将此MPIBlockVector的条目复制到其他

cumprod([axis, dtype, out])

返回沿给定轴的元素累积乘积。

cumsum([axis, dtype, out])

返回沿给定轴的元素累积和。

diagonal([offset, axis1, axis2])

返回指定的对角线。

dot(other[, out])

返回点积

dump(文件)

将数组的pickle转储到指定的文件中。

dumps()

返回数组的pickle作为字符串。

fill(value)

用标量值填充MPIBLockVector。

finalize_block_sizes([broadcast, block_sizes])

只有在你知道自己在做什么的情况下才设置broadcast=False!

flatten([order])

返回数组的副本,将其压缩为一维。

get_block(key)

get_block_size(ndx)

getfield(dtype[, offset])

返回给定数组的某个字段作为特定类型。

is_broadcasted()

item(*args)

将数组的一个元素复制到一个标准的Python标量并返回它。

itemset(*args)

make_local_copy()

将MPIBlockVector复制到BlockVector中

make_local_structure_copy()

创建一个与MPIBlockVector结构相同的BlockVector

max([axis, out, keepdims])

返回存储在此MPIBlockVector中的最大值

mean([axis, dtype, out, keepdims])

返回此MPIBlockVector中所有条目的平均值

min([axis, out, keepdims])

返回向量中存储的最小值

newbyteorder([new_order])

nonzero()

返回非零元素的索引。

partition(kth[, axis, kind, order])

部分排序数组中的元素,使得第k个位置的元素值处于其在排序数组中的位置。

pprint([root])

以漂亮的格式打印BlockVector

prod([axis, dtype, out, keepdims])

返回此MPIBlockVector中所有条目的乘积

put(indices, values[, mode])

为所有在索引中的n设置a.flat[n] = values[n]

ravel([order])

返回一个扁平化的数组。

repeat(repeats[, axis])

重复数组的元素。

reshape(shape, /, *[, order, copy])

返回一个包含相同数据但具有新形状的数组。

resize(new_shape[, refcheck])

就地更改数组的形状和大小。

round([decimals, out])

返回MPIBlockVector,每个元素四舍五入到指定的小数位数

searchsorted(v[, side, sorter])

找到在a中插入v元素的索引以保持顺序。

set_block(key, value)

set_blocks(blocks)

以块为单位分配向量

setfield(val, dtype[, offset])

将值放入由数据类型定义的字段中的指定位置。

setflags([write, align, uic])

分别设置数组标志为WRITEABLE、ALIGNED、WRITEBACKIFCOPY。

sort([axis, kind, order])

原地排序数组。

squeeze([axis])

a中移除长度为1的轴。

std([axis, dtype, out, ddof, keepdims, where])

返回沿给定轴的数组元素的标准差。

sum([axis, dtype, out, keepdims])

返回此MPIBlockVector中所有条目的总和

swapaxes(axis1, axis2)

返回一个数组视图,其中axis1axis2互换。

take(indices[, axis, out, mode])

返回一个由a中给定索引处的元素组成的数组。

to_device

tobytes([order])

构造包含数组中原始数据字节的Python字节。

tofile(fid[, sep, format])

将数组作为文本或二进制(默认)写入文件。

tolist()

禁用 np.ndarray.tolist,因为它不受支持。

tostring([order])

~ndarray.tobytes 的兼容别名,行为完全相同。

trace([offset, axis1, axis2, dtype, out])

返回数组对角线上的和。

transpose(*axes)

返回数组的转置轴视图。

var([axis, dtype, out, ddof, keepdims, where])

返回数组元素沿给定轴的方差。

view([dtype][, type])

具有相同数据的数组的新视图。

属性

T

转置数组的视图。

base

如果内存来自其他对象,则为基本对象。

bshape

返回此MPIBlockVector中的块数,以元组形式表示。

ctypes

一个用于简化数组与ctypes模块交互的对象。

data

指向数组数据起始位置的Python缓冲区对象。

device

dtype

数组元素的数据类型。

flags

有关数组内存布局的信息。

flat

数组的一维迭代器。

has_none

如果块向量没有条目,则返回True

imag

数组的虚部。

itemsize

一个数组元素的长度(以字节为单位)。

mT

矩阵转置数组的视图。

mpi_comm

返回MPI通信器

nblocks

返回块的数量。

nbytes

数组元素消耗的总字节数。

ndim

返回此MPIBlockVector的维度

owned_blocks

返回此处理器拥有的块的索引列表。

ownership_mask

返回一个布尔一维数组,指示哪些块由该处理器拥有

ptp

rank_ownership

返回一个包含拥有每个块的处理器等级的1D数组。

real

数组的实部。

shape

返回MPIBlockVector中的元素总数

shared_blocks

返回所有处理器共享的块的索引列表

size

返回此MPIBlockVector中的元素总数

strides

遍历数组时在每个维度上步进的字节元组。

成员文档

all(axis=None, out=None, keepdims=False)[source]

如果所有元素的评估结果都为True,则返回True。

any(axis=None, out=None, keepdims=False)[source]

如果所有元素的评估结果都为True,则返回True。

block_sizes(copy=True)[source]

返回一个一维数组,包含此MPIBlockVector中各个块的大小

broadcast_block_sizes()[source]

将所有块的大小发送到所有处理器。调用此方法后,MPIBlockVector 知道它在所有块中的维度。在使用 MPIBlockVector 运行任何操作之前,必须调用此方法。

clip(min=None, max=None, out=None)[source]

返回一个MPIBlockVector,其值限制在[min, max]之间。必须提供max或min中的一个。

Parameters:
  • min (scalar_like, optional) – 最小值。如果为None,则不对下限进行裁剪。

  • max (scalar_like, optional) – 最大值。如果为None,则不执行上区间边缘的裁剪。

Return type:

MPIBlockVector

clone(value=None, copy=True)[source]

返回此MPIBlockVector的副本

Parameters:
  • value (标量, 可选) – 克隆向量的所有条目都设置为该值

  • 复制 (bool, 可选) – 如果设置为true,则对此向量中的每个块进行深拷贝。默认值为False

Return type:

MPIBlockVector

compress(condition, axis=None, out=None)[source]

返回每个子块的选定切片。

Parameters:

条件 (MPIBlockVector 用于选择要返回的条目。) – 确定选择(在条件中评估为 True)

Return type:

MPIBlockVector

conj()[source]

对所有元素进行复共轭。

conjugate()[source]

对所有元素进行复共轭。

copy(order='C')[source]

返回MPIBlockVector的副本

copy_structure()[source]

返回一个填充了零的MPIBlockVector结构的副本

copyfrom(other)[source]

将其他条目复制到此MPIBlockVector中

Parameters:

其他 (MPIBlockVectorBlockVector)

Return type:

copyto(other)[source]

将此MPIBlockVector的条目复制到其他

Parameters:

其他 (MPIBlockVectorBlockVector)

Return type:

cumprod(axis=None, dtype=None, out=None)[source]

返回沿给定轴的元素累积乘积。

请参考numpy.cumprod获取完整文档。

另请参阅

numpy.cumprod

等效函数

cumsum(axis=None, dtype=None, out=None)[source]

返回沿给定轴的元素累积和。

请参考numpy.cumsum获取完整文档。

另请参阅

numpy.cumsum

等效函数

dot(other, out=None)[source]

返回点积

Parameters:

其他 (MPIBlockVector)

Return type:

float

fill(value)[source]

用标量值填充MPIBLockVector。

Parameters:

value (标量) – 向量中的所有元素将被赋予这个值

Return type:

finalize_block_sizes(broadcast=True, block_sizes=None)[source]

只有在你知道自己在做什么的情况下才设置broadcast=False!

Parameters:
  • 广播 (bool)

  • block_sizes (Nonenp.ndarray)

flatten(order='C')[source]

返回数组的副本,将其压缩为一维。

Parameters:

order ({'C', 'F', 'A', 'K'}, optional) – ‘C’ 表示按行优先(C风格)顺序展开。 ‘F’ 表示按列优先(Fortran风格)顺序展开。‘A’ 表示如果 a 在内存中是 Fortran 连续的,则按列优先顺序展开,否则按行优先顺序展开。‘K’ 表示按元素在内存中出现的顺序展开 a。 默认值为 ‘C’。

Returns:

y – 输入数组的副本,展平为一维。

Return type:

ndarray

另请参阅

ravel

返回一个扁平化的数组。

flat

数组的一维扁平迭代器。

示例

>>> import numpy as np
>>> a = np.array([[1,2], [3,4]])
>>> a.flatten()
array([1, 2, 3, 4])
>>> a.flatten('F')
array([1, 3, 2, 4])
make_local_copy()[源代码]

将MPIBlockVector复制到BlockVector中

Return type:

BlockVector

make_local_structure_copy()[source]

创建一个与MPIBlockVector结构相同的BlockVector

Return type:

BlockVector

max(axis=None, out=None, keepdims=False)[source]

返回存储在此MPIBlockVector中的最大值

mean(axis=None, dtype=None, out=None, keepdims=False)[source]

返回此MPIBlockVector中所有条目的平均值

min(axis=None, out=None, keepdims=False)[source]

返回向量中存储的最小值

nonzero()[source]

返回非零元素的索引。

pprint(root=0)[source]

以漂亮的格式打印BlockVector

prod(axis=None, dtype=None, out=None, keepdims=False)[source]

返回此MPIBlockVector中所有条目的乘积

ravel([order])[source]

返回一个扁平化的数组。

请参考numpy.ravel以获取完整的文档。

另请参阅

numpy.ravel

等效函数

ndarray.flat

数组上的一个扁平迭代器。

round(decimals=0, out=None)[source]

返回MPIBlockVector,每个元素四舍五入到指定的小数位数

set_blocks(blocks)[source]

以块为单位分配向量

Parameters:

blocks (list) – 向量列表

Return type:

std(axis=None, dtype=None, out=None, ddof=0, keepdims=False, *, where=True)[source]

返回沿给定轴的数组元素的标准差。

请参阅numpy.std以获取完整文档。

另请参阅

numpy.std

等效函数

sum(axis=None, dtype=None, out=None, keepdims=False)[source]

返回此MPIBlockVector中所有条目的总和

tolist()[source]

禁用 np.ndarray.tolist,因为它不受支持。

var(axis=None, dtype=None, out=None, ddof=0, keepdims=False, *, where=True)[source]

返回数组元素沿给定轴的方差。

请参考numpy.var获取完整文档。

另请参阅

numpy.var

等效函数

property bshape

返回此MPIBlockVector中的块数,以元组形式表示。

property has_none

如果块向量没有条目,则返回True

property mpi_comm

返回MPI通信器

property nblocks

返回块的数量。

property ndim

返回此MPIBlockVector的维度

property owned_blocks

返回此处理器拥有的块的索引列表。

property ownership_mask

返回一个布尔一维数组,指示哪些块由该处理器拥有

property rank_ownership

返回一个包含每个块所属处理器等级的1D数组。由所有处理器共同拥有的块的所有权为-1。

property shape

返回MPIBlockVector中的元素总数

property shared_blocks

返回所有处理器共享的块的索引列表

property size

返回此MPIBlockVector中的元素总数