Glossary

Glossary#

hawk’s own terms. For words shared across the family (manifest, sample, DLPack, certification row, …) see the family glossary.

plane#

The role one argument plays for every sample: a per-sample input (Scalar), a shared constant (Param) or an output (Mutable[...]).

kernel kind#

A declared shared shape for a family of kernels (KernelKind), grown by ordinary Python inheritance.

primitive#

A function you register with hawk.ext.primitive together with its forward and, optionally, jvp/vjp rules, so it can appear in a kernel.

guard#

Which masks gate a sample (hawk.ext.Guard): a sample runs only when none of the named masks, such as terminated or rejected, is set.

dispatch policy#

How a per-sample branch between several formulas is compiled. It never changes what is computed.

tape#

The record of the state a stepping kernel read at each step, kept so a gradient can be taken backward through a whole rollout.

jvp#

Forward-mode derivative: how an output moves for a given change of the inputs.

vjp#

Reverse-mode derivative: how a change of the output maps back to the inputs.

step vjp#

The vjp of one step of a kernel that updates its planes in place (hawk.diff.step_vjp). It reads each plane’s value before the step, takes bar_<plane>_next (the gradient with respect to the value after the step) and returns bar_<plane> (the gradient with respect to the value before it).

derived#

A kernel that hawk builds from another one, such as its jvp, vjp or taping twin.

compile cache#

The store of compiled kernels. Building the same kernel again copies it from the cache instead of recompiling.

device image#

The compiled GPU code (DeviceImage, PTX or SASS) hawk produces for a kernel; eagle launches it.

integer plane#

A per-sample plane of 32-bit integers, declared Int32 (np.int32) or UInt32 (np.uint32); Param[Int32] declares an integer parameter. + - * wrap modulo 2^32, // and % follow Python’s sign rules (a zero divisor gives 0), & | ^ ~ << >> act on the bits (a shift count outside [0, 32) gives 0, or -1 for a negative value shifted right), as NumPy does. An integer never mixes with a float without a cast: hawk.math.real(n) gives the float, hawk.math.int32(x) / hawk.math.uint32(x) the integer (truncating toward zero, saturating at the type’s range, NaN to 0). An integer plane is never differentiated. Index is the separate 64-bit index type for addresses and selectors.

payload#

The sealed bundle of aether’s C++ headers that hawk’s runtime GPU compiles build against. It ships in the aether-dsc package, so a GPU build needs no aether checkout.