A dynamically-growing pool that leases exclusive, reusable single-cell items.
A dynamically-growing pool of single-cell items handed out as exclusive, non-cloneable handles.
Print a formatted message using the target’s debug print facilities. The format string is target
specific, but Vulkan and CUDA both use the C++ conventions. WGSL isn’t currently supported.
Print a formatted message using the target’s debug print facilities. The format string is target
specific, but Vulkan and CUDA both use the C++ conventions. WGSL isn’t currently supported.
let define!(T) = elem; defines a type T naming elem to the end of its block. A
function re-entered on another element gives T back to its outer call when the inner one
returns.
GPU version of asm. Currently parses all the same options, but most are not
applicable to GPU assembly architectures. Should validate and give proper errors at some point.
Also adds a new register spec: the inferred register specifier (_). This is because the
specifier isn’t actually meaningful in PTX and is currently ignored, with constraints being
inferred from the value type. The reason it’s still present is because we may want to add an
explicit mem specifier to allow fine-grained memory clobbering, or support for other assembly
formats that do use different register types.
let size!(N) = size; defines a size N to the end of its block. A function re-entered on
another size gives N back to its outer call when the inner one returns.
Everything the memory of a MemoryScope holds, stream by stream: the
single place memory is read from. A caller that wants the totals asks for
the usage.
A 4-bit floating point type with 2 exponent bits and 1 mantissa bit. Packed with two elements
per value, to allow for conversion to/from bytes. Care must be taken to ensure the shape is
adjusted appropriately.
Rust’s powi returns mathematically incorrect results on Windows for large negative exponents.
This is an implementation of the standard exponentiation by squaring algorithm used by compilers
on most platforms to implement accurate powi. Should be bit-identical to the one in LLVM’s compiler-rt.
Find the maximum vector size usable for parallel vectorization along the given axis
from the supported vector sizes or return 1 if vectorization is impossible.
Find the maximum vector size usable for perpendicular vectorization along the given axis
from the supported vector sizes or return 1 if vectorization is impossible.
Derive macro to let a cube type cross between the host and a cube
function’s harness, as an input or an output. The type must also derive
CubeType and CubeLaunch.