@@ -24,8 +24,14 @@ struct
2424 type context = Backend .context
2525 type event = Backend .event
2626
27- (* FIXME: *)
28- let work_for _context _tn = failwith " NOT IMPLEMENTED YET"
27+ let work_for context tn =
28+ let stream = Backend. get_ctx_stream context in
29+ let default () = Some (Backend. all_work stream) in
30+ if not @@ Map. mem (Backend. ctx_arrays context) tn then None
31+ else
32+ Hashtbl. update_and_return stream.requested_work_for tn ~f: (function
33+ | None | Some None -> default ()
34+ | Some (Some _ as event ) -> event)
2935
3036 let % diagn2_l_sexp from_host (ctx : Backend.context ) tn =
3137 match (tn, Map. find (Backend. ctx_arrays ctx) tn) with
@@ -109,13 +115,13 @@ module Multicore_backend (Backend : Backend_types.No_device_backend) = struct
109115 }
110116 [@@ deriving sexp_of ]
111117
112- type domain = unit Domain .t
118+ type runner = unit Domain .t
113119
114- let sexp_of_domain (d : domain ) = Sexp. Atom (" domain-" ^ Int. to_string (Domain. get_id d :> int ))
120+ let sexp_of_runner (d : runner ) = Sexp. Atom (" domain-" ^ Int. to_string (Domain. get_id d :> int ))
115121
116122 type device = CPU [@@ deriving sexp_of ]
117123 type event = Not_implemented_yet [@@ deriving sexp_of ]
118- type nonrec stream = (buffer_ptr , event , device , stream_state , domain ) stream [@@ deriving sexp_of ]
124+ type nonrec stream = (buffer_ptr , event , device , stream_state , runner ) stream [@@ deriving sexp_of ]
119125
120126 (* * TODO: Blocks till the event completes, if it's not done already. *)
121127 let sync Not_implemented_yet = ()
@@ -359,7 +365,9 @@ module Sync_backend (Backend : Backend_types.No_device_backend) = struct
359365 let get_used_memory CPU = Backend. get_used_memory ()
360366 let next_stream = ref 0
361367
362- type nonrec stream = (buffer_ptr , event , device , unit , unit ) stream [@@ deriving sexp_of ]
368+ type stream_state = unit [@@ deriving sexp_of ]
369+ type runner = unit [@@ deriving sexp_of ]
370+ type nonrec stream = (buffer_ptr , event , device , stream_state , runner ) stream [@@ deriving sexp_of ]
363371
364372 let new_stream CPU : stream =
365373 Int. incr next_stream;
0 commit comments