1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
(* src/packages/stats/onnx_ffi.ml *)
type session
external session_create : string -> session = "caml_onnx_session_create"
external session_run_multi : session -> string array -> float array array array -> string array -> float array array = "caml_onnx_session_run_multi"
external session_input_width : session -> int = "caml_onnx_session_input_width"
external session_input_names : session -> string array = "caml_onnx_session_input_names"
external session_output_names : session -> string array = "caml_onnx_session_output_names"
external session_metadata : session -> (string * string) list = "caml_onnx_session_metadata"
(* Global registry for session handles, indexed by path *)
let registry = Hashtbl.create 8
let get_session path =
match Hashtbl.find_opt registry path with
| Some session -> session
| None ->
let session = session_create path in
Hashtbl.add registry path session;
session
let close_session path =
Hashtbl.remove registry path
let clear_cache () =
Hashtbl.clear registry