-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit ed1bae3
Showing
1,109 changed files
with
144,242 additions
and
0 deletions.
There are no files selected for viewing
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
# Sphinx build info version 1 | ||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. | ||
config: dd583967a38976ecf5d0dcae1c9f5a0b | ||
tags: 645f666f9bcd5a90fca523b33c5a78b7 |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
.. Spiner Documentation master file, created by | ||
sphinx-quickstart on Tue Nov 2 16:56:44 2021. | ||
You can adapt this file completely to your liking, but it should at least | ||
contain the root `toctree` directive. | ||
Spiner: Performance portable routines for generic, tabulated, multi-dimensional data | ||
===================================================================================== | ||
|
||
`Spiner`_ is a library for storing, indexing, and interpolating | ||
multidimensional data in a performance-portable way. It's intended to | ||
run on CPUs, GPUs and everything in-between. You can create a table on | ||
a CPU, copy it to a GPU, and interpolate on it in a GPU kernel, for | ||
example. | ||
|
||
.. _Spiner: https://github.com/lanl/spiner | ||
|
||
Spiner also defines (via hdf5) a file format that bundles data | ||
together with instructions for interpolating it. This means you don't | ||
have to specify anything to start interpolating, simple load the file | ||
and evaluate where you want. | ||
|
||
Interpolation is linear. Here's an example of 3D interpolation (2D | ||
slice shown) on a GPU, with second-order convergence: | ||
|
||
.. image:: ../../figs/convergence.png | ||
|
||
See below for details of how to use spiner in your project and how to | ||
develop for it. | ||
|
||
If you use Spiner and need help, submit an issue to the Spiner | ||
repository. If you'd like to contribute, just fork and submit a pull | ||
request. There's a check list in the PR template, and one of the main | ||
Spiner developers will review your PR. | ||
|
||
Spiner also relies on `Ports of Call`_ as a simple performance | ||
portability layer. Ports of Call is included as a submodule, and | ||
automatically integrated into the build system. | ||
|
||
.. _Ports of Call: https://lanl.github.io/ports-of-call/main/index.html | ||
|
||
.. toctree:: | ||
:maxdepth: 1 | ||
:caption: Contents: | ||
|
||
src/building | ||
src/getting-started | ||
src/databox | ||
src/interpolation | ||
src/sphinx-howto | ||
|
||
Indices and tables | ||
================== | ||
|
||
* :ref:`genindex` | ||
* :ref:`modindex` | ||
* :ref:`search` | ||
|
||
This documentation is approved for unlimited release, LA-UR-22-20363. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
.. _building: | ||
|
||
Building and Installation | ||
========================== | ||
|
||
``Spiner`` is self-contained and header-only. Clone it as: | ||
|
||
.. code-block:: bash | ||
git clone --recursive [email protected]:lanl/spiner.git | ||
Building from source | ||
^^^^^^^^^^^^^^^^^^^^^ | ||
|
||
To build tests and install: | ||
|
||
.. code-block:: bash | ||
mkdir -p spiner/bin | ||
cd sppiner/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`: https://www.hdfgroup.org/solutions/hdf5 | ||
|
||
.. _`Kokkos`: https://github.com/kokkos/kokkos | ||
|
||
.. _`ports-of-call`: https://lanl.github.io/ports-of-call/main/index.html | ||
|
||
HDF5 is searched for and configured via the usual `cmake`_ machinery. | ||
|
||
.. _`cmake`: https://cmake.org/ | ||
|
||
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. | ||
|
||
.. _`Catch2`: https://github.com/catchorg/Catch2 | ||
|
||
Spack | ||
^^^^^^ | ||
|
||
.. warning:: | ||
The spack build is currently experimental. | ||
Please report problems you have as github issues. | ||
|
||
Although the spackage has not yet made it to the main `Spack`_ | ||
repositories, we provide a spackage for ``Spiner`` within the | ||
the source repository. If you have spack installed, | ||
simply call | ||
|
||
.. _Spack: https://spack.io/ | ||
|
||
.. code-block:: bash | ||
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. |
Oops, something went wrong.