Skip to content

Gyselalib++ is a collection of C++ components for writing gyrokinetic semi-lagrangian codes and similar

License

Notifications You must be signed in to change notification settings

gyselax/gyselalibxx

Repository files navigation

Gyselalib++

Gyselalib++ is a collection of C++ components for writing gyrokinetic semi-lagrangian codes and similar as well as a collection of such codes. It is based on DDC. We strongly encourage new developers to begin by reading our documentation about Using DDC in Gyselalibxx.

Set-up

In order to set up Gyselalib++ on a new machine, simply run:

git clone --recurse-submodules [email protected]:gysela-developpers/gyselalibxx.git gyselalibxx
cd gyselalibxx
./bin/install-hooks

or

git clone --recurse-submodules https://gitlab.maisondelasimulation.fr/gysela-developpers/gyselalibxx.git gyselalibxx
cd gyselalibxx
./bin/install-hooks

on a machine for which Gyselalib++ is already used an environment script may be available to set up the necessary modules etc.

Please check the toolchains/ folder to find the existing configurations. See the documentation about toolchains for more information on the provided files.

For example in order to set up the environment on the Adastra supercomputer simply run:

source toolchains/mi250.hipcc.adastra.spack/prepare.sh
source toolchains/mi250.hipcc.adastra.spack/environment.sh

Compilation

To compile Gyselalib++, navigate to the folder where the library was cloned to and run:

mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=<TOOLCHAIN_FILE> ..
make

The toolchains are found in the folder toolchains/. Each toolchain is designed for specific hardware with the exception of those in the folder docker.gyselalibxx_env/. These toolchains can be used with the docker environment on most hardware.

For more details about toolchains, see the documentation about toolchains.

Execution

to run the tests:

ctest --output-on-failure

Then, just have a look at tests/geometryXVx/landau/fft/growthrate_t0.0to45.0.png:

tests/geometryXVx/landau/fft/growthrate_t0.0to45.0.png

and tests/geometryXVx/landau/fft/frequency_t0.0to45.0.png:

tests/geometryXVx/landau/fft/frequency_t0.0to45.0.png

Dependencies

To install dependencies through spack, first follow the the 3 first steps of https://github.com/pdidev/spack

Then execute the following:

spack env create gyselalibxx spack.yaml
spack env activate gyselalibxx
spack concretize --reuse
spack install

For example, you can find a Dockerfile installing these dependencies on ubuntu in docker/gyselalibxx_env/Dockerfile.