Skip to content

mainReduceNonCommutativeWGSL

Overview

A specialized raked reduce for when our input is non-commutative AND stored in a blocked (not striped) order. We essentially serialize some of it (reading a workgroup-size chunk at a time, reducing it, then loading the next).

@author Jonathan Olson <jonathan.olson@colorado.edu>

Type mainReduceNonCommutativeWGSLOptions

import type { mainReduceNonCommutativeWGSLOptions } from 'scenerystack/alpenglow';
  • input: BufferSlot<T[]>
  • output: BufferSlot<T[]>
  • binaryOp: BinaryOp<T>
    TODO: length handling?!?
  • stripeOutput?: boolean
    We can stripe the output (so the next layer of reduce can read it as striped)
  • reduceOptions?: StrictOmit<reduceWGSLOptions<T>, "value" | "scratch" | "workgroupSize" | "binaryOp" | "localIndex" | "scratchPreloaded" | "valuePreloaded" | "mapScratchIndex" | "convergent">
    e.g. something in the future?
  • & RakedSizable & OptionalLengthExpressionable

Source Code

See the source for mainReduceNonCommutativeWGSL.ts in the alpenglow repository.