Building and Installation

Spiner is self-contained and header-only. Clone it as:

git clone --recursive git@github.com:lanl/spiner.git

Building from source

To build tests and install:

cd spiner  # cd to repo root
mkdir bin
cd bin
cmake -DBUILD_TESTING=ON ..
make -j
make test
make install

Spiner supports a few cmake configuration options:

  • BUILD_TESTING enables tests

  • SPINER_USE_HDF5 enables support for saving and loading tables as hdf5.

  • SPINER_HDF5_INSTALL_DIR tells the build system where hdf5 is located.

  • SPINER_USE_KOKKOS enables Kokkos as a backend

  • SPINER_USE_KOKKOS_SRC tells the build system to build Kokkos from source, and where the source directory is located. Note that if you use this option, you cannot install Spiner, only build the tests.

  • SPINER_KOKKOS_INSTALL_DIR tells the build system where to find pre-compiled Kokkos

  • SPINER_USE_CUDA enables the Kokkos cuda backend

  • CMAKE_INSTALL_PREFIX sets the install location

  • CMAKE_BUILD_TYPE sets the build type

  • SPINER_FORCE_INTERNAL_PORTS forces use of a ports-of-call submodule rather than a system install

HDF5 is searched for and configured via the usual cmake machinery.

A format_spiner target is also added if clang-format is found, so that make format_spiner will auto-format the repository.

Testing is enabled via Catch2, which is automatically downloaded during the cmake configure phase if needed.

Spack

Spiner is available through Spack. If you have spack installed, simply call:

spack install spiner

We also provide a spackage for Spiner within the the source repository. If you would like to use the source spackage:

spack repo add spiner/spack-repo
spack install spiner

The spack repo supports a few variants:

  • +kokkos enables the Kokkos backend

  • +cuda enables the cuda backend. A cuda_arch must be specified.

  • +hdf5 enables HDF5 file support.

  • +mpi enables parallel hdf5 support

  • +python installs python, numpy, and matplotlib support

  • +doc adds tooling for building the docs

  • +format adds support for clang-format

Including Spiner in your Project

Spiner can be included into a cmake project, either in-tree as a submodule or after installation via find_package. The cmake system provides the spiner::spiner cmake target.