cupyx.distributed.array.DistributedArray#
- class cupyx.distributed.array.DistributedArray(self, shape, dtype, chunks_map, mode=REPLICA, comms=None)[源代码][源代码]#
跨多个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.mode关于模式的详细信息。方法
- all_chunks()[源代码][源代码]#
返回带有所有缓冲数据刷新的块。
缓冲数据是在诸如重新分片和模式更改的情况下创建的。
- 返回类型:
dict[int, list[cupy.ndarray]]
- change_mode(mode)[源代码][源代码]#
以给定模式返回视图或副本。
- 参数:
mode (mode Object) – 如何解释块的重叠。
- 返回类型:
参见
DistributedArray.mode关于模式的详细信息。
- max(axis=None, out=None, keepdims=False)[源代码][源代码]#
返回沿给定轴的最大值。
备注
目前,它仅支持
axis的非None值以及out和keepdims的默认值。参见
cupy.ndarray.max(),numpy.ndarray.max()
- min(axis=None, out=None, keepdims=False)[源代码][源代码]#
沿指定轴返回最小值。
备注
目前,它仅支持
axis的非None值以及out和keepdims的默认值。参见
cupy.ndarray.min(),numpy.ndarray.min()
- prod(axis=None, dtype=None, out=None, keepdims=None)[源代码][源代码]#
沿指定轴返回最小值。
备注
目前,它仅支持
axis的非None值以及out和keepdims的默认值。参见
cupy.ndarray.prod(),numpy.ndarray.prod()
- reshard(index_map)[源代码][源代码]#
返回一个视图或副本,具有给定的 index_map。
设备之间的数据传输是在内部创建的单独流上完成的。为了使它们异步,传输的数据会被缓冲,并在必要时反映到数据块中。
- 参数:
index_map (dict from int to array indices) – 具有指定ID的设备所拥有的块的索引。可以从
DistributedArray.index_map获取分布式数组的当前 index_map。- 返回类型:
- sum(axis=None, dtype=None, out=None, keepdims=False)[源代码][源代码]#
沿指定轴返回最小值。
备注
目前,它仅支持
axis的非None值以及out和keepdims的默认值。参见
cupy.ndarray.sum(),numpy.ndarray.sum()
- __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,否则返回 False
属性
- T#
不支持。
- base#
不支持。
- cstruct#
不支持。
- data#
不支持。
- device#
不支持。
- devices#
一组持有部分数据的设备ID。
- dtype#
- flags#
不支持。
- flat#
不支持。
- imag#
不支持。
- index_map#
具有指定ID的设备所拥有的块的索引。
- itemsize#
每个元素的大小(以字节为单位)。
参见
numpy.ndarray.itemsize
- mode#
描述如何解释块的重叠部分。
在副本模式下,块在其重叠段上的值保证是相同的。在其他模式下,它们不一定相同,并且表示原始数据的最大值、总和等。
DistributedArray目前支持cupyx.distributed.array.REPLICA、cupyx.distributed.array.MIN、cupyx.distributed.array.MAX、cupyx.distributed.array.SUM、cupyx.distributed.array.PROD模式。许多对分布式数组的操作,包括
cupy.ufunc和matmul(),都需要事先更改它们的状态。这些状态转换是自动完成的,因此在大多数情况下,用户不需要手动管理状态。示例
>>> 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#
不支持。