A high-performance Fast Multipole Method (FMM) library supporting SIMD and CUDA code generation.
This repository uses Git submodules. Clone it with:
git clone --recurse-submodules git@github.com:dmarce1/spherical_fmm.git
cd spherical_fmmIf you already cloned the repository without submodules, initialize them with:
git submodule update --init --recursiveCreate an out-of-source build directory:
mkdir release
cd release
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . -jor equivalently:
cmake -S . -B release -DCMAKE_BUILD_TYPE=Release
cmake --build release -j- CMake ≥ 3.12
- GCC (or another C++ compiler with C++20 support)
- NVIDIA CUDA Toolkit (if CUDA support is enabled)
- GMP
- MPFR
After building, the following executables are produced:
test— General library test program.brille— Brill wave example and validation test.
They can be run with:
./release/test
./release/brilleTo pull the latest changes from all submodules:
git submodule update --remote --mergeAfter updating a submodule, commit the updated submodule pointer in the parent repository.