pub struct ReduceOperation<'c> { /* private fields */ }
Expand description
A reduce
operation. Returns an expression reduced over a shape or extent tensor.
An operation that takes as input a shape or extent tensor, and a number of initial values. This operation has a region that is applied repeatedly for every extent of the input. Starting with the initial values, the individual extents are then aggregated as defined by the associated region.
Conceptually this op performs the following reduction:
res[] = init;
for (int i = 0, i < shape.rank(); i++) {
res = reduce(i, shape[i], res[0], ..., res[n]);
}
Where reduce
represents the region attached and the result of the reduce
op is the last computed output of the reduce region. As an example, the
number of elements can be computed as follows:
func.func @reduce(%shape : !shape.shape, %init : !shape.size) ->
!shape.size {
%num_elements = shape.reduce(%shape, %init) -> !shape.size {
^bb0(%index: index, %dim: !shape.size, %acc: !shape.size):
%updated_acc = "shape.mul"(%acc, %dim) :
(!shape.size, !shape.size) -> !shape.size
shape.yield %updated_acc : !shape.size
}
return %num_elements : !shape.size
}
Implementations§
source§impl<'c> ReduceOperation<'c>
impl<'c> ReduceOperation<'c>
sourcepub fn as_operation(&self) -> &Operation<'c>
pub fn as_operation(&self) -> &Operation<'c>
Returns a generic operation.
sourcepub fn builder(
context: &'c Context,
location: Location<'c>
) -> ReduceOperationBuilder<'c, Unset, Unset, Unset, Unset>
pub fn builder( context: &'c Context, location: Location<'c> ) -> ReduceOperationBuilder<'c, Unset, Unset, Unset, Unset>
Creates a builder.
pub fn result(&self) -> impl Iterator<Item = OperationResult<'c, '_>>
pub fn shape(&self) -> Result<Value<'c, '_>, Error>
pub fn init_vals(&self) -> impl Iterator<Item = Value<'c, '_>>
pub fn region(&self) -> Result<RegionRef<'c, '_>, Error>
Trait Implementations§
source§impl<'c> From<ReduceOperation<'c>> for Operation<'c>
impl<'c> From<ReduceOperation<'c>> for Operation<'c>
source§fn from(operation: ReduceOperation<'c>) -> Self
fn from(operation: ReduceOperation<'c>) -> Self
Converts to this type from the input type.
Auto Trait Implementations§
impl<'c> RefUnwindSafe for ReduceOperation<'c>
impl<'c> !Send for ReduceOperation<'c>
impl<'c> !Sync for ReduceOperation<'c>
impl<'c> Unpin for ReduceOperation<'c>
impl<'c> UnwindSafe for ReduceOperation<'c>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more