Library version, soname and package name
========================================

HYPRE does not provide ABI backwards compatibility. The ABI might
change, even between patch version updates (Z in X.Y.Z).

For that reason a separate libhypre-X.Y.Z package is used for each
patch release.


64-bit HYPRE
============

The standard packages libhypre-dev and libhypre-* provide a standard
HYPRE build, meaning that a standard int (32-bit) is used to define
both HYPRE_Int and HYPRE_BigInt.

Debian also provides 64-bit builds of HYPRE, but HYPRE implements two
variants of this.

The libhypre64-dev and libhypre64-* packages provide a full 64-bit
build using the --with-bigint configuration option, which means
long long int is used for both HYPRE_Int and HYPRE_BigInt.

The libhypre64m-dev and libhypre64m-* packages provide a mixed 64-bit
build using the --with-mixedint configuration option, which means
long long int (64 bit) is used for HYPRE_BigInt, while standard int
(32-bit) is used for HYPRE_Int.

You would need a 64-bit build to process extremely large systems
(billions of degrees of freedom). But on cloud computing systems
constrained by memory bandwidth, you might find that performance is
relatively poor using the full 64-bit bigint library, libhypre64-*.
In this situation you might obtain better performance with the
mixedint library, libhypre64m-*.

However, libhypre64m-* (mixedint) might not be safe. Segfaults have been
reported in MPI tests. libhypre64m-* should be considered experimental.
We provide libhypre64m-* in order to enable broader inspection and testing.
Use libhypre64m-* with care (or do not use).
See https://github.com/hypre-space/hypre/issues/326

In summary:

  libhypre64-dev   =  bigint
  libhypre64m-dev  =  mixedint
