Processing overview#
A processing step is one stage in a fused kernel: ingest or exgest, a pointwise transform,
or an area (neighborhood) step. Compose each step from MathDx operators
with +, then call execute() in sequence inside a user __global__ function.
This section describes the steps available in the current release. Operator catalogs and completeness rules remain on Operators.
A fused kernel always includes ingest and exgest, and may include any mix of pointwise and area steps between them. When any step needs a halo, the whole fused kernel uses the Shared-memory API; otherwise the Register-only API is available. See Image Processing Using NPPDx for walkthroughs and Achieving High Performance for fusion and tile-size guidance.
As these pointwise and area processing steps are fused in the middle of the kernel, round-trip traffic to global memory is eliminated. Because of the decoupling of the I/O and processing steps, additional packing formats can be added to the library with ease, without risking significant changes to the rest of the library, or to an already existing fused kernel.