Module Sarek_native.Native_plugin

module Native_base : sig ... end

Reuse the existing Native implementation

Extend Framework_sig.kargs with Native-specific variant

type native_intrinsic = {
  1. intr_name : string;
  2. intr_codegen : string;
  3. intr_convergence : Spoc_framework.Framework_sig.convergence;
}

Native-specific intrinsic implementation

Intrinsic registry for Native-specific intrinsics

Native Backend - implements BACKEND

val registered_backend : unit lazy_t

Auto-register backend when module is loaded

val init : unit -> unit

Force module initialization

Additional Native-specific Functions

val register_intrinsic : string -> Native_intrinsics.intrinsic_impl -> unit

Register a custom Native intrinsic

val find_intrinsic : string -> Native_intrinsics.intrinsic_impl option

Look up a Native intrinsic

val run_kernel_direct : name:'a -> native_fn: (Spoc_framework.Framework_sig.exec_arg array -> (int * int * int) -> (int * int * int) -> unit) -> args:Spoc_framework.Framework_sig.exec_arg array -> grid:(int * int * int) -> block:(int * int * int) -> unit

Execute a kernel directly with the registered function

val register_kernel : string -> (Spoc_framework.Framework_sig.exec_arg array -> (int * int * int) -> (int * int * int) -> unit) -> unit

Register a kernel for direct execution (wraps Native_plugin_base.register_kernel)

val kernel_registered : string -> bool

Check if a kernel is registered

val list_kernels : unit -> string list

List all registered kernels