EV74 memory and dataflow
Open diagram at full size. The arrows show execution and data dependencies, not a new allocation at every step. Runtime retains the external buffers for the job; the kernel transfers bounded regions into and out of local scratch. Output DMA retirement precedes Runtime completion and the caller's next access.
A typical device implementation transfers an admitted region from external memory to local scratch, computes a tile, and transfers output back. Buffering and overlap are operation-specific: do not assume every kernel is double-buffered or exposes an asynchronous public host API.
Responsibilities
- Runtime/platform integration retains the backing storage, resolves device addresses, performs required coherency operations and orders submission and completion.
- Device kernel code manages its admitted local buffers, DMA events and numerical work. Its scratch and fragment constraints are part of that implementation.
- The caller must not reuse or free storage while the platform still owns an
in-flight submission. This is different from the synchronous A65 borrowed-view
lifetime, which ends when
execute()returns.
The native QuantTess implementation
uses bounded local source/output slots. Input transfers complete before conversion;
output transfers complete before slot reuse and numerical return. See
ocl_native_quanttess.cl (EV74/quanttess/device/ocl_native_quanttess.cl).
These private device controls are not public Params. Use the typed request and
its native codec; device controls are not application configuration.
Preserve the numerical pipeline while fusing transfers
A fused implementation may avoid a dense intermediate or overlap DMA with computation. It must still preserve its admitted scalar interpretation, arithmetic precision, rounding, zero-point placement, saturation and physical output format. For example, native QuantTess shares A65's ordered numerical contract and uses a multiplier, not a divisor. Fusion does not remove either rounding boundary. Use the operation's documented arithmetic and eligibility rather than inferring them from an implementation helper or storage format.
Local tiling is not sufficient validation. Check DMA boundaries and tails, fragment coverage, completion ordering, zero/poison padding behavior, and actual numerical outputs on the matching device artifact.