Skip to content

CExA-project/ddc

Repository files navigation

The discrete domain computation library (DDC)

License: MIT test

See https://ddc.mdls.fr/

DDC, is a C++-17 library that aims to offer to the C++/MPI world an equivalent to the xarray.DataArray/dask.Array python environment. Where these two libraries are based on numpy, DDC relies on Kokkos and mdspan to offer CPU/GPU performance-portable multi-dimensional arrays and iterators.

DDC aims to offer abstractions to represent:

  • tagged continuous dimensions,
  • discretizations of these (multiple kinds of meshes, function spaces, Fourier, etc.),
  • domains in these discretized dimensions,
  • associating data to the elements of these discrete domains,
  • efficient distribution and iteration over this data.

All these abstractions are handled at compilation using C++ template meta-programming to ensure zero overhead at execution and enable developers to change their design choices (e.g. from a regular mesh to a non-uniform one) with performance portability.

Find out more...

If you like the project, please leave us a github star.

If you want to know more, join un on Slack

Prerequisites

To use DDC core, one needs the following dependencies:

  • a C++17-compliant compiler
  • CMake 3.22...<4
  • Kokkos 4.4...<5
  • (optional, micro benchmarking) Benchmark 1.8...<2
  • (optional, documentation) Doxygen 1.8.13...<2
  • (optional, unit-testing) GoogleTest 1.14...<2

To use DDC components, one needs the following dependencies:

  • (optional, fft interface) DDC::fft
    • Kokkos-fft 0.2.1...<1
  • (optional, IO interface) DDC::pdi
    • PDI 1.6...<2
  • (optional, spline interpolation) DDC::splines
    • Ginkgo 1.8...<2
    • Kokkos Kernels 4.5.1...<5

Getting the code and basic configuration

git clone --recurse-submodules -j4 https://github.com/CExA-project/ddc.git
cd ddc
cmake -B build -D DDC_BUILD_KERNELS_FFT=OFF -D DDC_BUILD_KERNELS_SPLINES=OFF -D DDC_BUILD_PDI_WRAPPER=OFF
cmake --build build

Contributing

Formatting

The project makes use of formatting tools for the C++ (clang-format) and cmake (gersemi) files. The formatting must be applied for a PR to be accepted.

To format a cmake file, please apply the command

gersemi -i the-cmake-file

One can find the formatting style in the file .gersemirc.

To format a C++ file, please apply the command

clang-format -i the-cpp-file

One can find the formatting style in the file .clang-format.

Warning

The formatting might not give the same result with different versions of a tool.

Known issues

  • Kokkos 4.5.0 embeds a version of mdspan that is not compatible with DDC, see kokkos/mdspan#368. This issue has been fixed in Kokkos 4.5.1.
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy