Module Sarek_opencl.Opencl_plugin

module Opencl_base : sig ... end

Reuse the existing OpenCL implementation

Extend Framework_sig.kargs with OpenCL-specific variant

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

OpenCL-specific intrinsic implementation

Intrinsic registry for OpenCL-specific intrinsics

OpenCL Backend - implements BACKEND

val is_disabled : unit -> bool

Check if backend is disabled via environment variable. Checked at runtime to allow SPOC_DISABLE_* to work without rebuild.

val registered_backend : unit lazy_t

Backend registration - happens once when first needed

val init : unit -> unit

Force module initialization

Additional OpenCL-specific Functions

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

Register a custom OpenCL intrinsic

val find_intrinsic : string -> Opencl_intrinsics.intrinsic_impl option

Look up an OpenCL intrinsic

val generate_with_types : types:(string * (string * Sarek_ir_types.elttype) list) list -> Sarek_ir_types.kernel -> string

Generate OpenCL source with custom types

val generate_source : Sarek_ir_types.kernel -> string

Generate OpenCL source for a kernel

val generate_with_fp64 : Sarek_ir_types.kernel -> string

Generate OpenCL source with FP64 extension if needed