pub struct ReduceOperation<'c> { /* private fields */ }
Expand description

A reduce operation. Reduce operation for parallel for.

“scf.reduce” is an operation occurring inside “scf.parallel” operations. It consists of one block with two arguments which have the same type as the operand of “scf.reduce”.

“scf.reduce” is used to model the value for reduction computations of a “scf.parallel” operation. It has to appear as an immediate child of a “scf.parallel” and is associated with a result value of its parent operation.

Association is in the order of appearance in the body where the first result of a parallel loop operation corresponds to the first “scf.reduce” in the operation’s body region. The reduce operation takes a single operand, which is the value to be used in the reduction.

The reduce operation contains a region whose entry block expects two arguments of the same type as the operand. As the iteration order of the parallel loop and hence reduction order is unspecified, the result of reduction may be non-deterministic unless the operation is associative and commutative.

The result of the reduce operation’s body must have the same type as the operands and associated result value of the parallel loop operation. Example:

%operand = arith.constant 1.0 : f32
scf.reduce(%operand) : f32 {
  ^bb0(%lhs : f32, %rhs: f32):
    %res = arith.addf %lhs, %rhs : f32
    scf.reduce.return %res : f32
}

Implementations§

source§

impl<'c> ReduceOperation<'c>

source

pub fn name() -> &'static str

Returns a name.

source

pub fn as_operation(&self) -> &Operation<'c>

Returns a generic operation.

source

pub fn builder( context: &'c Context, location: Location<'c> ) -> ReduceOperationBuilder<'c, Unset, Unset>

Creates a builder.

source

pub fn operand(&self) -> Result<Value<'c, '_>, Error>

source

pub fn reduction_operator(&self) -> Result<RegionRef<'c, '_>, Error>

Trait Implementations§

source§

impl<'c> From<ReduceOperation<'c>> for Operation<'c>

source§

fn from(operation: ReduceOperation<'c>) -> Self

Converts to this type from the input type.
source§

impl<'c> TryFrom<Operation<'c>> for ReduceOperation<'c>

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(operation: Operation<'c>) -> Result<Self, Self::Error>

Performs the conversion.

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> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.