T
- data type for outputs()
output@Operator public final class DynamicPartition<T> extends PrimitiveOp implements Iterable<Operand<T>>
For each index tuple `js` of size `partitions.ndim`, the slice `data[js, ...]` becomes part of `outputs[partitions[js]]`. The slices with `partitions[js] = i` are placed in `outputs[i]` in lexicographic order of `js`, and the first dimension of `outputs[i]` is the number of entries in `partitions` equal to `i`. In detail,
outputs[i].shape = [sum(partitions == i)] + data.shape[partitions.ndim:]
outputs[i] = pack([data[js, ...] for js if partitions[js] == i])
`data.shape` must start with `partitions.shape`.
For example:
# Scalar partitions.
partitions = 1
num_partitions = 2
data = [10, 20]
outputs[0] = [] # Empty with shape [0, 2]
outputs[1] = [[10, 20]]
# Vector partitions.
partitions = [0, 0, 1, 1, 0]
num_partitions = 2
data = [10, 20, 30, 40, 50]
outputs[0] = [10, 20, 50]
outputs[1] = [30, 40]
See `dynamic_stitch` for an example on how to merge partitions back.
operation
Modifier and Type | Method and Description |
---|---|
static <T> DynamicPartition<T> |
create(Scope scope,
Operand<T> data,
Operand<Integer> partitions,
Long numPartitions)
Factory method to create a class wrapping a new DynamicPartition operation.
|
Iterator<Operand<T>> |
iterator() |
List<Output<T>> |
outputs() |
equals, hashCode, op, toString
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
forEach, spliterator
public static <T> DynamicPartition<T> create(Scope scope, Operand<T> data, Operand<Integer> partitions, Long numPartitions)
scope
- current scopedata
- partitions
- Any shape. Indices in the range `[0, num_partitions)`.numPartitions
- The number of partitions to output.Copyright © 2022. All rights reserved.