sig
  val auto : bool Pervasives.ref
  val unsafe : bool Pervasives.ref
  val auto_transfers : bool -> unit
  val unsafe_rw : bool -> unit
  val to_device :
    ('a, 'b) Spoc.Vector.vector ->
    ?queue_id:int -> Spoc.Devices.device -> unit
  val to_cpu : ('a, 'b) Spoc.Vector.vector -> ?queue_id:int -> unit -> unit
  val unsafe_set : ('a, 'b) Spoc.Vector.vector -> int -> '-> unit
  val unsafe_get : ('a, 'b) Spoc.Vector.vector -> int -> 'a
  val set : ('a, 'b) Spoc.Vector.vector -> int -> '-> unit
  val get : ('a, 'b) Spoc.Vector.vector -> int -> 'a
  val sub_vector :
    ('a, 'b) Spoc.Vector.vector ->
    int -> ?ok_rng:int -> ?ko_rng:int -> int -> ('a, 'b) Spoc.Vector.vector
  val vector_copy :
    ('a, 'b) Spoc.Vector.vector ->
    int -> ('a, 'b) Spoc.Vector.vector -> int -> int -> unit
  val matrix_copy :
    ('a, 'b) Spoc.Vector.vector ->
    int ->
    int ->
    int ->
    ('a, 'b) Spoc.Vector.vector -> int -> int -> int -> int -> int -> unit
end