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