Module Nvector_parallel

module Nvector_parallel: sig .. end

The standard parallel nvectors of Sundials (requires MPI).

type data = Sundials.RealArray.t * int * Mpi.communicator 

Parallel nvectors carry triples of a local bigarray of floats, a global length, and an MPI communicator.

type kind 

Represents the internal layout of a parallel nvector.

type t = (data, kind) Nvector.t 

The type of parallel nvectors.

type Nvector.gdata += 
| Par of data

Generic wrapper for

exception IncorrectGlobalSize

Raised by make if the given global length is not consistent with the sum of local lengths across all parallel instances.

val make : ?context:Sundials.Context.t ->
?with_fused_ops:bool ->
int -> int -> Mpi.communicator -> float -> t

make nl ng c iv creates a new parallel nvector with nl local elements, that is part of a global array with ng elements. The local elements are initialized to iv, and communications occur on c.

The optional argument enables the fused and array operations for a given nvector (they are disabled by default).

val clone : t -> t

Creates an nvector with a distinct underlying array but that shares the original global size and communicator.

val wrap : ?context:Sundials.Context.t ->
?with_fused_ops:bool -> data -> t

wrap a creates a new parallel nvector from a.

The optional arguments permit to enable all the fused and array operations for a given nvector (they are disabled by default).

val unwrap : t -> data

Aliases Nvector.unwrap.

val pp : Stdlib.Format.formatter -> t -> unit

Pretty-print the local portion of a parallel nvector using the Format module.

val local_array : t -> Sundials.RealArray.t

local_array nv returns the local array a underlying the parallel nvector nv.

val local_length : t -> int

Returns the number of local elements for a parallel nvector.

val global_length : t -> int

Returns the number of global elements for a parallel nvector.

val communicator : t -> Mpi.communicator

Returns the communicator used for the parallel nvector.

val get_communicator : ('d, 'k) Nvector.t -> Mpi.communicator option

Return the communicator associated with any nvector.

val hide_communicator : Mpi.communicator -> Nvector_custom.communicator

Hides an MPI communicator for use in custom nvector functions.

val enable : ?with_fused_ops:bool ->
?with_linear_combination:bool ->
?with_scale_add_multi:bool ->
?with_dot_prod_multi:bool ->
?with_linear_sum_vector_array:bool ->
?with_scale_vector_array:bool ->
?with_const_vector_array:bool ->
?with_wrms_norm_vector_array:bool ->
?with_wrms_norm_mask_vector_array:bool ->
?with_scale_add_multi_vector_array:bool ->
?with_linear_combination_vector_array:bool ->
?with_dot_prod_multi_local:bool -> t -> unit

Selectively enable or disable fused and array operations. The with_fused_ops argument enables or disables all such operations.

module MakeOps (A : sig
type local_data 
val get : local_data -> int -> float
val set : local_data -> int -> float -> unit
val fill : local_data -> float -> unit
val make : int -> float -> local_data
val clone : local_data -> local_data
val length : local_data -> int
end: Nvector.NVECTOR_OPS 
            with type t = A.local_data * int * Mpi.communicator

Produce a set of parallel Nvector.NVECTOR_OPS from basic operations on an underlying array.

module Ops: Nvector.NVECTOR_OPS  with type t = t

Underlying nvector operations on parallel nvectors.

module DataOps: Nvector.NVECTOR_OPS  with type t = data

Nvector operations on implemented in OCaml.

module Any: sig .. end

A generic nvector interface to parallel nvectors.