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).

This makes it inconvenient to follow the usual Debian practice of
creating a library binary package libhypre-X.Y containing the
library for a given ABI soname. The package would have to pass through
the NEW queue as a new package each time, even for a minor patch update.

For this reason, starting with 2.18.1, the library binary package is
provided as libhypre without the soname version embedded in the name.
Version dependency is enforced via a strict shlibs patch version
dependency in the shlibs file,
  libHYPRE __HYPRE_VERSION__ libhypre (>= __HYPRE_VERSION__), libhypre (<< __HYPRE_VERSION_NEXT__)

This practice of strict shlibs dependency is not normally done since
it impedes transition of packages into testing: all dependent packages
need to be rebuilt against the new library version and transition at
the same time. For hypre this is expected to be less of an
inconvenience than the inconvenience of traversing the NEW queue with
each version update. There are only 2* dependent packages:
  petsc (*and slepc)
  sundials


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
