IMPORTANT: To view this page as Markdown, append `.md` to the URL (e.g. /max/get-started.md). For the complete documentation index, see llms.txt.
Skip to main content
For the complete documentation index, see llms.txt. Markdown versions of all pages are available by appending .md to any URL (e.g. /max/get-started.md).

Mojo module

reduce_op

Reduction monoid traits β€” the device-agnostic author surface.

A reduction algorithm is authored as a struct conforming to ReduceOp: inlined state fields, __init__ (identity), accumulate[w] (SIMD-tile fold), join (sequential combine), and optionally join_parallel[R: Reducer] (parallel combine). How participants cooperate and how the parallel scope is defined live in the Reducer impls.

Structs​

  • ​ArgMax: Argmax reduction monoid: tracks the (value, axis-index) pair with the largest value. Ties break to the lower index.
  • ​ArgMin: Argmin reduction monoid: mirrors ArgMax with </ge comparison (see ArgMax for the algorithm + design notes).
  • ​MinMax: Fused min+max reduction monoid: tracks both min(self, x) and max(self, x) in one state. Cuts the axis walk in half vs running separate ReduceMin + ReduceMax.
  • ​OnlineLogSumExp: Online (flash-style) log-sum-exp monoid (Milakov & Gimelshein, 2018) β€” the reduction half of softmax.
  • ​ReduceMax: Max reduction monoid: (self, x) -> max(self, x).
  • ​ReduceMin: Min reduction monoid: (self, x) -> min(self, x).
  • ​ReduceProduct: Product reduction monoid: (self, x) -> self * x.
  • ​ReduceSum: Sum reduction monoid: (self, x) -> self + x.
  • ​Welford: Welford's online mean/variance monoid (Welford 1962, Chan et al. 1979 for the combine) β€” the reduction half of layer_norm / group_norm.

Traits​

  • ​ReduceOp: Trait for an associative reduction monoid (identity + associative join).
  • ​Reducer: Parallel scalar reducer over the closed set of associative ops.