Input/Output#
It’s critical to efficiently move image data between global memory and an on-chip tile. Pair
InputOutput with InputFormat (ingest) or OutputFormat (exgest). See
I/O operators and Supported memory packing formats.
Ingest#
input_output_direction::ingest. InputOutput<input_output_direction::ingest>() with
InputFormat<packing_format:: ...> loads a tile from packed global memory into the internal
float representation. Supported layouts are listed under
Supported memory packing formats. When the fused
kernel includes neighborhood steps, ingest loads the extended tile (nominal tile plus
cumulative halo). In some cases, texture buffer hardware support may be available.
using Ingest = decltype(
InputOutput<input_output_direction::ingest>() +
InputFormat<packing_format::rgb24>() +
TileSize<48, 48>() +
Block() +
SM<900>());
Exgest#
input_output_direction::exgest. InputOutput<input_output_direction::exgest>() with
OutputFormat<packing_format:: ...> writes the internal tile back to packed global memory.
Supported layouts are listed under
Supported memory packing formats. In some cases, texture
buffer hardware support may be available.
using Exgest = decltype(
InputOutput<input_output_direction::exgest>() +
OutputFormat<packing_format::yuv420p>() +
TileSize<48, 48>() +
Block() +
SM<900>());
Notes:#
Processing steps are independent of the ingest/exgest formats.
Once a tile plus halo is loaded, multiple processes can be performed upon it.
A fused kernel may include more than one ingest or exgest step.