sig
  type parallel_session =
      (Nvector_parallel.data, Nvector_parallel.kind) Kinsol.session
  type parallel_preconditioner =
      (Nvector_parallel.data, Nvector_parallel.kind)
      Kinsol.Spils.preconditioner
  type bandwidths = { mudq : int; mldq : int; mukeep : int; mlkeep : int; }
  type local_fn = Nvector_parallel.data -> Nvector_parallel.data -> unit
  type comm_fn = Nvector_parallel.data -> unit
  val prec_right :
    ?dqrely:float ->
    Kinsol_bbd.bandwidths ->
    ?comm:Kinsol_bbd.comm_fn ->
    Kinsol_bbd.local_fn -> Kinsol_bbd.parallel_preconditioner
  val get_work_space : Kinsol_bbd.parallel_session -> int * int
  val get_num_gfn_evals : Kinsol_bbd.parallel_session -> int
end