cupyx.distributed.array.DistributedArray#

class cupyx.distributed.array.DistributedArray(self, shape, dtype, chunks_map, mode=REPLICA, comms=None)[source]#

跨多个 CUDA 设备分布的多维数组。

此类实现了 cupy.ndarray 提供的一些基本操作。数组内容被分割成块,即与原始数组切片相对应的连续数组。注意,一个设备可以持有多个块。

此直接构造函数设计用于内部调用。用户应使用 distributed_array() 创建分布式数组。

参数:
  • shape (tuple of ints) – 创建的数组的形状。

  • dtype (dtype_like) – 任何可以被解释为 numpy 数据类型的对象。

  • chunks_map (dict from int to list of chunks) – 与每个设备关联的块对象列表。

  • mode (mode object, optional) – 确定如何解释块重叠的模式。默认为 cupyx.distributed.array.REPLICA

  • comms (optional) – 分布式数组内部持有的通信器对象。与其他分布式数组共享这些对象可以节省时间,因为它们的初始化操作开销较大。

返回类型:

DistributedArray

另请参阅

有关模式的详细信息,请参阅 DistributedArray.mode

方法

__getitem__(*args, **kwargs)[source]#

不支持。

__setitem__(*args, **kwargs)[source]#

不支持。

__len__(*args, **kwargs)[source]#

不支持。

__iter__(*args, **kwargs)[source]#

不支持。

__copy__(*args, **kwargs)[source]#

不支持。

all(*args, **kwargs)[source]#

不支持。

all_chunks()[source]#

返回已清除所有缓冲数据的块。

缓冲数据在重新分片和模式更改等情况下创建。

返回类型:

dict[int, list[cupy.ndarray]]

any(*args, **kwargs)[source]#

不支持。

argmax(*args, **kwargs)[source]#

不支持。

argmin(*args, **kwargs)[source]#

不支持。

argpartition(*args, **kwargs)[source]#

不支持。

argsort(*args, **kwargs)[source]#

不支持。

astype(*args, **kwargs)[source]#

不支持。

change_mode(mode)[source]#

以给定模式返回视图或副本。

参数:

mode (mode Object) – 如何解释块重叠的模式。

返回类型:

DistributedArray

另请参阅

有关模式的详细信息,请参阅 DistributedArray.mode

choose(*args, **kwargs)[source]#

不支持。

clip(*args, **kwargs)[source]#

不支持。

compress(*args, **kwargs)[source]#

不支持。

conj(self) ndarray#
conjugate(self) ndarray#
copy(*args, **kwargs)[source]#

不支持。

cumprod(*args, **kwargs)[source]#

不支持。

cumsum(*args, **kwargs)[source]#

不支持。

diagonal(*args, **kwargs)[source]#

不支持。

dot(*args, **kwargs)[source]#

不支持。

dump(*args, **kwargs)[source]#

不支持。

dumps(*args, **kwargs)[source]#

不支持。

fill(*args, **kwargs)[source]#

不支持。

flatten(*args, **kwargs)[source]#

不支持。

get(stream=None, order='C', out=None, blocking=True)[source]#

在主机内存上返回数组的副本。

返回类型:

ndarray

item(*args, **kwargs)[source]#

不支持。

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

沿给定轴返回最大值。

注意

目前,它仅支持 axis 的非 None 值以及 outkeepdims 的默认值。

mean(*args, **kwargs)[source]#

不支持。

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

沿给定轴返回最小值。

注意

目前,它仅支持 axis 的非 None 值以及 outkeepdims 的默认值。

nonzero(*args, **kwargs)[source]#

不支持。

partition(*args, **kwargs)[source]#

不支持。

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

沿给定轴返回最小值。

注意

目前,它仅支持 axis 的非 None 值以及 outkeepdims 的默认值。

ptp(*args, **kwargs)[source]#

不支持。

put(*args, **kwargs)[source]#

不支持。

ravel(*args, **kwargs)[source]#

不支持。

reduced_view(*args, **kwargs)[source]#

不支持。

repeat(*args, **kwargs)[source]#

不支持。

reshape(*args, **kwargs)[source]#

不支持。

reshard(index_map)[source]#

返回具有给定 index_map 的视图或副本。

跨设备的数据传输在内部创建的单独流上完成。为了使其异步,传输的数据会被缓冲并在必要时反映到块中。

参数:

index_map (dict from int to array indices) – 具有指定 ID 的设备拥有的块的索引。分布式数组当前的 index_map 可以从 DistributedArray.index_map 获取。

返回类型:

DistributedArray

round(*args, **kwargs)[source]#

不支持。

scatter_add(*args, **kwargs)[source]#

不支持。

scatter_max(*args, **kwargs)[source]#

不支持。

scatter_min(*args, **kwargs)[source]#

不支持。

searchsorted(*args, **kwargs)[source]#

不支持。

set(*args, **kwargs)[source]#

不支持。

sort(*args, **kwargs)[source]#

不支持。

squeeze(*args, **kwargs)[source]#

不支持。

std(*args, **kwargs)[source]#

不支持。

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

沿给定轴返回最小值。

注意

目前,它仅支持 axis 的非 None 值以及 outkeepdims 的默认值。

swapaxes(*args, **kwargs)[source]#

不支持。

take(*args, **kwargs)[source]#

不支持。

toDlpack(*args, **kwargs)[source]#

不支持。

tobytes(*args, **kwargs)[source]#

不支持。

tofile(*args, **kwargs)[source]#

不支持。

tolist(*args, **kwargs)[source]#

不支持。

trace(*args, **kwargs)[source]#

不支持。

transpose(*args, **kwargs)[source]#

不支持。

var(*args, **kwargs)[source]#

不支持。

view(*args, **kwargs)[source]#

不支持。

__eq__(value, /)#

返回 self==value。

__ne__(value, /)#

返回 self!=value。

__lt__(value, /)#

返回 self<value。

__le__(value, /)#

返回 self<=value。

__gt__(value, /)#

返回 self>value。

__ge__(value, /)#

返回 self>=value。

__bool__()#

若 self 为 True 则返回 True,否则返回 False

属性

T#

不支持。

base#

不支持。

cstruct#

不支持。

data#

不支持。

device#

不支持。

devices#

持有部分数据的设备 ID 的集合。

dtype#
flags#

不支持。

flat#

不支持。

imag#

不支持。

index_map#

具有指定 ID 的设备拥有的块的索引。

itemsize#

每个元素占用的字节大小。

另请参阅

numpy.ndarray.itemsize

mode#

描述如何解释块之间的重叠。

在 replica 模式下,块在其重叠段上保证具有相同的值。在其他模式下,它们不一定相同,并将其最大值、总和等作为原始数据表示。

DistributedArray 当前支持 cupyx.distributed.array.REPLICA, cupyx.distributed.array.MIN, cupyx.distributed.array.MAX, cupyx.distributed.array.SUM, cupyx.distributed.array.PROD 模式。

许多对分布式数组的操作,包括 cupy.ufuncmatmul(),都涉及事先改变其模式。这些模式转换是自动完成的,因此在大多数情况下,用户无需手动管理模式。

示例

>>> A = distributed_array(
...     cupy.arange(6).reshape(2, 3),
...     make_2d_index_map([0, 2], [0, 1, 3],
...                       [[{0}, {1, 2}]]))
>>> B = distributed_array(
...     cupy.arange(12).reshape(3, 4),
...     make_2d_index_map([0, 1, 3], [0, 2, 4],
...                       [[{0}, {0}],
...                        [{1}, {2}]]))
>>> C = A @ B
>>> C
array([[20, 23, 26, 29],
       [56, 68, 80, 92]])
>>> C.mode
'sum'
>>> C.all_chunks()
{0: [array([[0, 0],
            [0, 3]]),     # left half
     array([[0, 0],
            [6, 9]])],    # right half
 1: [array([[20, 23],
            [56, 65]])],  # left half
 2: [array([[26, 29],
            [74, 83]])]}  # right half
>>> C_replica = C.change_mode('replica')
>>> C_replica.mode
'replica'
>>> C_replica.all_chunks()
{0: [array([[20, 23],
            [56, 68]]),   # left half
     array([[26, 29],
            [80, 92]])],  # right half
 1: [array([[20, 23],
            [56, 68]])],  # left half
 2: [array([[26, 29],
            [80, 92]])]}  # right half
nbytes#

所有元素占用的总字节大小。

不计算元素之间的间隔。

另请参阅

numpy.ndarray.nbytes

ndim#

维度数量。

a.ndim 等效于 len(a.shape)

另请参阅

numpy.ndarray.ndim

real#

不支持。

shape#

数组维度的元组。

当前不支持对此属性进行赋值。

size#
strides#

不支持。