Ir.Backend_implImplementation-facing types and components.
module Lazy = Utils.Lazymodule type No_device_buffer_and_copying = sig ... endmodule No_device_buffer_and_copying
() :
No_device_buffer_and_copying with type buffer_ptr = Base.unit Ctypes.ptrmodule Device_types (Device_config : Backend_intf.Device_config) : sig ... endmodule Device_types_ll
(Device_config : Backend_intf.Device_config_common) :
sig ... endval next_global_device_id : Utils.atomic_intmodule Device
(Device_types : Backend_intf.Device_types)
(Alloc_buffer :
Backend_intf.Alloc_buffer
with type buffer_ptr := Device_types.buffer_ptr
and type stream := Device_types.stream) :
sig ... endmodule type Backend_impl_common = sig ... endParts shared by backend implementations.
module type For_add_scheduler = sig ... endAn interface to adding schedulers for stream-agnostic (typically CPU) backend implementations.
module type Lowered_no_device_backend = sig ... endLowered-level stream agnostic backend interface: implementation-facing API for CPU backends.
module type No_buffer_retrieval_or_syncing = sig ... endmodule type With_scheduler = sig ... endAn intermediate stage for converting Lowered_no_device_backend backends into Lowered_backend. It could potentially be used for assignments-level backends too.
module type Lowered_backend = sig ... endLowered-level backend interface: implementation-facing API for device-based (GPU, or CPU after adding a scheduler) backends based on the Low_level IR.
module Alloc_buffer_ignore_stream
(Device_types : Backend_intf.Device_types)
(Backend :
Backend_intf.Alloc_buffer
with type buffer_ptr = Device_types.buffer_ptr
and type stream := Base.unit) :
Backend_intf.Alloc_buffer
with type buffer_ptr = Backend.buffer_ptr
and type stream = Device_types.stream