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:
- _mpiw
来自MPI空间的通信器。通常是MPI.COMM_WORLD
- Type:
MPI通信器
- _block_vector
内部块向量。属于此处理器的块存储在_block_vector中。不属于此处理器的块为空,并存储为numpy.zeros(0)
- Type:
- _owned_mask
1D-数组,指示一个块是否属于此处理器。虽然 _rank_owner 告诉每个块由哪个处理器拥有,_owned_mask 告诉 一个块是否由此处理器拥有。由所有人拥有的块 (即所有权 = -1)在 _owned_mask 中为 True
- Type:
numpy.ndarray 布尔型
- _owned_blocks
包含此处理器拥有的块索引的一维数组。这包括所有权为-1的块。
- Type:
- _unique_owned_blocks
1D-array 包含仅由此处理器拥有的块索引。这不包括所有权为 -1 的块。
- Type:
- _brow_lengths
大小为nblocks的一维数组,指定了MPIBlockVector中每个条目的长度。这在所有处理器中都是相同的。
- Type:
注释
这是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[, ...])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中各个块的大小
将所有块的大小发送到所有处理器。
byteswap([inplace])交换数组元素的字节
choose(choices[, out, mode])使用索引数组从一组选择中构造一个新数组。
clip([min, max, out])返回MPIBlockVector,其值限制在[min, max]之间。
clone([value, copy])返回此MPIBlockVector的副本
compress(condition[, axis, out])返回每个子块的选定切片。
conj()对所有元素进行复共轭。
对所有元素进行复共轭。
copy([order])返回MPIBlockVector的副本
返回一个填充了零的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)将MPIBlockVector复制到BlockVector中
创建一个与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)返回一个数组视图,其中axis1和axis2互换。
take(indices[, axis, out, mode])返回一个由a中给定索引处的元素组成的数组。
to_devicetobytes([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如果内存来自其他对象,则为基本对象。
返回此MPIBlockVector中的块数,以元组形式表示。
ctypes一个用于简化数组与ctypes模块交互的对象。
data指向数组数据起始位置的Python缓冲区对象。
devicedtype数组元素的数据类型。
flags有关数组内存布局的信息。
flat数组的一维迭代器。
如果块向量没有条目,则返回True
imag数组的虚部。
itemsize一个数组元素的长度(以字节为单位)。
mT矩阵转置数组的视图。
返回MPI通信器
返回块的数量。
nbytes数组元素消耗的总字节数。
返回此MPIBlockVector的维度
返回此处理器拥有的块的索引列表。
返回一个布尔一维数组,指示哪些块由该处理器拥有
ptp返回一个包含拥有每个块的处理器等级的1D数组。
real数组的实部。
返回MPIBlockVector中的元素总数
返回所有处理器共享的块的索引列表
返回此MPIBlockVector中的元素总数
strides遍历数组时在每个维度上步进的字节元组。
成员文档
- 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:
- clone(value=None, copy=True)[source]
返回此MPIBlockVector的副本
- Parameters:
value (标量, 可选) – 克隆向量的所有条目都设置为该值
复制 (bool, 可选) – 如果设置为true,则对此向量中的每个块进行深拷贝。默认值为False
- Return type:
- compress(condition, axis=None, out=None)[source]
返回每个子块的选定切片。
- Parameters:
条件 (MPIBlockVector 用于选择要返回的条目。) – 确定选择(在条件中评估为 True)
- Return type:
- copyfrom(other)[source]
将其他条目复制到此MPIBlockVector中
- Parameters:
其他 (MPIBlockVector 或 BlockVector)
- Return type:
无
- copyto(other)[source]
将此MPIBlockVector的条目复制到其他
- Parameters:
其他 (MPIBlockVector 或 BlockVector)
- 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:
- finalize_block_sizes(broadcast=True, block_sizes=None)[source]
只有在你知道自己在做什么的情况下才设置broadcast=False!
- Parameters:
广播 (bool)
block_sizes (None 或 np.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])
- ravel([order])[source]
返回一个扁平化的数组。
请参考numpy.ravel以获取完整的文档。
另请参阅
numpy.ravel等效函数
ndarray.flat数组上的一个扁平迭代器。
- std(axis=None, dtype=None, out=None, ddof=0, keepdims=False, *, where=True)[source]
返回沿给定轴的数组元素的标准差。
请参阅numpy.std以获取完整文档。
另请参阅
numpy.std等效函数
- 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 size
返回此MPIBlockVector中的元素总数