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.primitivetogether with its forward and, optionally,jvp/vjprules, 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 asterminatedorrejected, 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, takesbar_<plane>_next(the gradient with respect to the value after the step) and returnsbar_<plane>(the gradient with respect to the value before it).- derived#
A kernel that hawk builds from another one, such as its
jvp,vjpor 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) orUInt32(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.Indexis 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-dscpackage, so a GPU build needs no aether checkout.