pub unsafe trait CpuUninitLayoutTransformProvider: CpuLayoutTransformProvider {
// Required method
unsafe fn materialize_into_uninit(
&self,
context: &CpuExecutionContext<'_>,
input: &TensorRead<'_>,
intent: CpuLayoutTransformIntent,
conjugate: bool,
output_bytes: &mut [MaybeUninit<u8>],
) -> Result<CpuProviderOutcome>;
}Expand description
Provider for engine-owned tensor materialization into uninitialized bytes.
§Safety
Implementors assert that CpuUninitLayoutTransformProvider::materialize_into_uninit
writes every element of output_bytes before returning
CpuProviderOutcome::Executed; partial writes make the caller’s
assume_init undefined behavior. Implementations must never read the
destination.
§Examples
use tenferro_cpu::provider::CpuUninitLayoutTransformProvider;Required Methods§
Sourceunsafe fn materialize_into_uninit(
&self,
context: &CpuExecutionContext<'_>,
input: &TensorRead<'_>,
intent: CpuLayoutTransformIntent,
conjugate: bool,
output_bytes: &mut [MaybeUninit<u8>],
) -> Result<CpuProviderOutcome>
unsafe fn materialize_into_uninit( &self, context: &CpuExecutionContext<'_>, input: &TensorRead<'_>, intent: CpuLayoutTransformIntent, conjugate: bool, output_bytes: &mut [MaybeUninit<u8>], ) -> Result<CpuProviderOutcome>
Materialize one validated input into uninitialized bytes.
§Safety
Must write every element of output_bytes (a compact column-major
destination of the input shape for
CpuLayoutTransformIntent::CanonicalColumnMajor) before returning
Executed; partial writes are UB at the caller’s assume_init. The
destination is never read.
§Errors
Returns tenferro_tensor::Error::BackendSource or
tenferro_tensor::Error::BackendFailure when execution fails. A
detected inconsistency in engine-attested layout or range metadata is
returned as tenferro_tensor::Error::Validation. Unsupported layouts
use CpuProviderOutcome::Unsupported instead.
§Examples
use tenferro_cpu::provider::{CpuLayoutTransformIntent, CpuProviderOutcome, CpuUninitLayoutTransformProvider};
use tenferro_cpu::CpuExecutionContext;
use tenferro_tensor::TensorRead;
use std::mem::MaybeUninit;Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".