Sarek_metal.Metal_apival memcpy_lazy :
(unit Ctypes_static.ptr ->
unit Ctypes_static.ptr ->
Unsigned.size_t ->
unit Ctypes_static.ptr)
lazy_tmemcpy from libc for memory transfers, with the OCaml runtime lock released (a large copy would otherwise stop every other domain's minor collections). Both arguments are raw addresses, which the call does not root: the caller keeps the memory behind them allocated until memcpy returns (bigarrays end with ignore (Sys.opaque_identity ba); MTLBuffer contents stays valid while the buffer is retained). See Metal_bindings.msg_void_blocking_lazy.
Deprecated: no longer raised. check below now raises the canonical Metal_error.Metal_error (a Backend_error alias) via the shared Sarek_backend_error.Backend_error.Make.check funnel. Kept only so out-of-tree code matching on Metal_api.Metal_error msg still compiles (this library is opam-published).
val check : string -> Metal_types.mtl_error -> unitCheck Metal result and raise a canonical Backend_error on failure.
module Device : sig ... endbyte_size bytes of host memory aligned to the OS page size (posix_memalign), uninitialised. Released only by free_aligned.
module CommandQueue : sig ... endWithout the conformant compile options the device compiler runs in Metal's fast-math mode, which may reassociate: a fused epilogue kernel is then no longer guaranteed to equal the unfused pair. Mark Metal inexact so epilogue fusion stays off (docs/fp-contraction-policy.md section 14, Spoc_framework_registry.Fp_exactness).
Build the conformant options once at start-up, so a fallback is known before the first launch decides whether to fuse an epilogue.
Force every lazily built FFI stub on the launch, copy and release paths (see Metal_bindings.force_all).
module Pending : sig ... endmodule Memory : sig ... endmodule Library : sig ... endmodule ComputePipeline : sig ... endmodule Kernel : sig ... endmodule Profiling : sig ... end