Schedulers.Multicoremodule Backend : Ir.Backend_impl.For_add_schedulerinclude Ir.Backend_intf.Backend_device_common
with type buffer_ptr = Backend.buffer_ptr
with type optimize_ctx = Ir.Low_level.optimize_ctxinclude Ir.Backend_intf.Device
with type buffer_ptr = Backend.buffer_ptr
with type optimize_ctx = Ir.Low_level.optimize_ctxinclude Ir.Backend_intf.Device_types
with type buffer_ptr = Backend.buffer_ptr
with type optimize_ctx = Ir.Low_level.optimize_ctxinclude Ir.Backend_intf.Device_config
with type buffer_ptr = Backend.buffer_ptr
with type optimize_ctx = Ir.Low_level.optimize_ctxinclude Ir.Backend_intf.Device_config_common
with type buffer_ptr = Backend.buffer_ptrinclude Ir.Backend_intf.Buffer with type buffer_ptr = Backend.buffer_ptrtype buffer_ptr = Backend.buffer_ptrinclude sig ... endval sexp_of_dev : dev -> Sexplib0.Sexp.tval sexp_of_runner : runner -> Sexplib0.Sexp.tAn event tracks if a stream finished computing past a particular point in its schedue. These values are used internally for scheduling across streams of the backend, and can be used for explicit scheduling.
val sexp_of_event : event -> Sexplib0.Sexp.ttype optimize_ctx = Ir.Low_level.optimize_ctxThe optimization context for compiling code, in particular Low_level.optimize_ctx for low-level backends.
val sexp_of_optimize_ctx : optimize_ctx -> Sexplib0.Sexp.tval empty_optimize_ctx : Base.unit -> optimize_ctxtype nonrec device = (buffer_ptr, dev, runner, event) Ir.Backend_intf.deviceval sexp_of_device : device -> Sexplib0.Sexp.ttype nonrec stream = (buffer_ptr, dev, runner, event) Ir.Backend_intf.streamval sexp_of_stream : stream -> Sexplib0.Sexp.ttype nonrec context =
(buffer_ptr, stream, optimize_ctx) Ir.Backend_intf.contextval sexp_of_context : context -> Sexplib0.Sexp.tinclude Ir.Backend_intf.Alloc_buffer
with type buffer_ptr := buffer_ptr
and type stream := streaminclude Ir.Backend_intf.Buffer with type buffer_ptr := buffer_ptrval sexp_of_buffer_ptr : buffer_ptr -> Sexplib0.Sexp.tinclude sig ... endtype nonrec buffer = buffer_ptr Ir.Backend_intf.bufferval sexp_of_buffer : buffer -> Sexplib0.Sexp.ttype nonrec ctx_arrays = buffer_ptr Ir.Backend_intf.ctx_arraysval sexp_of_ctx_arrays : ctx_arrays -> Sexplib0.Sexp.tval alloc_array :
Ir.Ops.prec ->
dims:Base.int Base.array ->
stream ->
buffer_ptrval alloc_zeros :
Ir.Ops.prec ->
dims:Base.int Base.array ->
stream ->
buffer_ptrval free_buffer : (stream -> buffer_ptr -> Base.unit) Base.optionval make_context :
?ctx_arrays:ctx_arrays ->
?optimize_ctx:optimize_ctx ->
stream ->
contextReturns a context without a parent.
val make_child :
?ctx_arrays:ctx_arrays ->
?optimize_ctx:optimize_ctx ->
context ->
contextReturns a context with the same Backend_intf.context.stream, and Backend_intf.context.ctx_arrays, Backend_intf.context.optimize_ctx if omitted, as the given context's, which is also the Backend_intf.context.parent.
val get_name : stream -> Base.stringval sync : event -> Base.unitBlocks till the event completes, if it's not done already.
It is rarely needed to call sync explicitly, because it should always be called internally when necessary, in particular before extracting values from host.
val is_done : event -> Base.boolWhether the event completed.
Schedules waiting for the given event on the context's stream.
NOTE: it should rarely be needed to call will_wait_for explicitly, because it should always be called internally when necessary.
val get_used_memory : device -> Base.intReturns (an upper bound of) the memory used for arrays, in bytes.
Global debug information; backend-specific and might evolve independently on the backends.
val get_debug_info : stream -> Base.Sexp.tPer-stream debug information; backend-specific and might evolve independently on the backends
val await : stream -> Base.unitBlocks till the stream becomes idle, i.e. synchronizes the stream.
Returns the event indicating if any currently running or scheduled computations on the stream have completed.
val is_idle : stream -> Base.boolWhether the stream is currently waiting for work.
val get_device : ordinal:Base.int -> deviceval suggested_num_streams : device -> Base.intThe optimal number of streams for the given device to follow the Backend_intf.config strategy.