Skip to content

compute.kernels.reduceU32

Summary

compute.kernels.reduceU32 reduces a u32 buffer to one scalar using sum, min, or max. The result is written to a StorageBuffer returned by the method. You can limit elements with opts.count and provide reusable output via opts.out. Use this for integer reductions like counts, IDs, or histogram aggregates. opts.count defaults to the input's full logical u32 capacity. Empty sums and maxima return 0; an empty minimum returns 0xffffffff. Sum overflow wraps modulo 2³².

Syntax

WasmGPU.compute.kernels.reduceU32(input: StorageBuffer, op: ReduceOp, opts?: ReduceOptions): StorageBuffer
const out = wgpu.compute.kernels.reduceU32(input, op, opts);

Parameters

Name Type Required Description
input StorageBuffer Yes Source u32 data buffer to reduce.
op ReduceOp Yes Reduction operator: "sum", "min", or "max".
opts ReduceOptions No Optional execution settings such as count, out, and dispatch options.

Returns

StorageBuffer - Buffer containing one reduced u32 value. A new result is caller-owned and enables readback; a supplied result needs at least 4 bytes. When opts.encoder is present, non-empty reduction commands are recorded but not submitted.

Type Details

type ReduceOp = "sum" | "min" | "max";

type ReduceOptions = {
    encoder?: GPUCommandEncoder;
    label?: string;
    validateLimits?: boolean;
    count?: number;
    out?: StorageBuffer;
};

Example

const canvas = document.querySelector("canvas");
const wgpu = await WasmGPU.create(canvas);

const input = wgpu.compute.createStorageBuffer({ data: new Uint32Array([2, 4, 6, 8]), copySrc: true });
const out = wgpu.compute.kernels.reduceU32(input, "sum");
console.log(await wgpu.compute.readback.readScalarU32(out));

See Also