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 testsSPINER_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 backendSPINER_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 KokkosSPINER_USE_CUDA
enables the Kokkos cuda backendCMAKE_INSTALL_PREFIX
sets the install locationCMAKE_BUILD_TYPE
sets the build typeSPINER_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. Acuda_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.