Skip to content

Commit f2f8f11

Browse files
Update citations for Gyselalib++ and kokkos-fft. Add Baptiste as author (#956)
* Update references * Update authors and date * Update more citations --------- Co-authored-by: Thomas Padioleau <thomas.padioleau@cea.fr>
1 parent 34904cf commit f2f8f11

2 files changed

Lines changed: 30 additions & 13 deletions

File tree

paper/paper.bib

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -103,18 +103,29 @@ @INPROCEEDINGS{10820764
103103
doi={10.1109/SCW63240.2024.00154}}
104104

105105
@software{Bourne_Gyselalib,
106-
author = {Bourne, Emily and Grandgirard, Virginie and Asahi, Yuuichi and Bigot, Julien and Donnel, Peter and Hoffmann, Alexander and Kara, Abdelhadi and Krah, Philipp and Legouix, Baptiste and Malaboeuf, Etienne and Midou, Dorian and Munschy, Yann and Peybernes, Mathieu and Protais, Matthieu and Obrejan, Kevin and Padioleau, Thomas and Vidal, Pauline},
107-
license = {MIT},
108-
title = {{Gyselalib++}},
109-
url = {https://github.com/gyselax/gyselalibxx},
110-
version = {0.1.0}
106+
doi = {10.21105/joss.08582},
107+
url = {https://doi.org/10.21105/joss.08582},
108+
year = {2025},
109+
publisher = {The Open Journal},
110+
volume = {10},
111+
number = {113},
112+
pages = {8582},
113+
author = {Bourne, Emily and Grandgirard, Virginie and Asahi, Yuuichi and Bigot, Julien and Donnel, Peter and Hoffmann, Alexander and Kara, Abdelhadi and Krah, Philipp and Legouix, Baptiste and Malaboeuf, Etienne and Munschy, Yann and Obrejan, Kevin and Padioleau, Thomas and Protais, Matthieu and Vidal, Pauline},
114+
title = {Gyselalib++: A Portable C++ Library for Semi-Lagrangian Kinetic and Gyrokinetic Simulations},
115+
journal = {Journal of Open Source Software}
111116
}
112117

113-
@software{kokkos-fft,
114-
author = {{The kokkos-fft team}},
115-
title = {{kokkos-fft}},
116-
url = {https://github.com/kokkos/kokkos-fft},
117-
version = {0.3.0}
118+
@article{kokkos-fft,
119+
doi = {10.21105/joss.08391},
120+
url = {https://doi.org/10.21105/joss.08391},
121+
year = {2025},
122+
publisher = {The Open Journal},
123+
volume = {10},
124+
number = {111},
125+
pages = {8391},
126+
author = {Asahi, Yuuichi and Padioleau, Thomas and Zehner, Paul and Bigot, Julien and Lebrun-Grandie, Damien},
127+
title = {kokkos-fft: A shared-memory FFT for the Kokkos ecosystem},
128+
journal = {Journal of Open Source Software}
118129
}
119130

120131
@software{Pusz_mp-units_2024,

paper/paper.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,19 @@ authors:
2424
orcid: 0000-0002-3469-2338
2525
affiliation: 2
2626

27+
- name: Baptiste Legouix
28+
orcid: 0009-0006-7585-669X
29+
affiliation: 3
30+
2731
affiliations:
2832

2933
- name: Université Paris-Saclay, UVSQ, CNRS, CEA, Maison de la Simulation, 91191, Gif-sur-Yvette, France
3034
index: 1
3135
- name: SCITAS, EPFL, CH-1015 Lausanne, Switzerland
3236
index: 2
33-
date: 03 April 2025
37+
- name: CEA, IRFM, 13108 Saint-Paul-lez-Durance Cedex, France
38+
index: 3
39+
date: 31 October 2025
3440
bibliography: paper.bib
3541

3642
---
@@ -47,7 +53,7 @@ Many programming languages commonly used in scientific computing support multidi
4753

4854
Despite their importance, multidimensional arrays introduce several practical challenges. In a sense, they encourage the usage of implicit information in the source code. A frequent source of errors is the inadvertent swapping of indices when accessing elements. Such errors can be difficult to detect, especially given the common convention of using single-letter variable names like `i` and `j` for indexing. Another challenge in medium to large codebases is the lack of semantic clarity in function signatures when using raw multidimensional arrays. When array dimensions carry specific meanings, this information is not explicitly represented in the source code, leaving it up to the user to ensure that dimensions are ordered correctly according to implicit expectations. For example it is quite usual to use the same index for multiple interpretations: looping over mesh cells identified by `i` and interpreting `i+1` as the face to the right. Another example is slicing that removes dimensions, this can shift the positions of remaining dimensions, altering the correspondence between axis indices and their semantic meanings.
4955

50-
Solutions have been proposed to address these issues. For example in Python, the Xarray [@hoyer2017xarray] library allows users to label dimensions that can then be used to perform computations. Following a similar approach, the "Discrete Domain Computation" (DDC) library aims to bring equivalent functionality to the C++ ecosystem. It uses a zero overhead abstraction approach, i.e. with labels fixed at compile-time, on top of different performant portable libraries, such as: Kokkos [@9485033], Kokkos Kernels [@rajamanickam2021kokkos], kokkos-fft [@kokkos-fft] and Ginkgo [@GinkgoJoss2020]. Labelling at compile time is achieved by strongly typing dimensions, an approach similar to that used in units libraries such as mp-units [@Pusz_mp-units_2024], which strongly type quantities rather than dimensions.
56+
Solutions have been proposed to address these issues. For example in Python, the Xarray [@hoyer2017xarray] library allows users to label dimensions that can then be used to perform computations. Following a similar approach, the "Discrete Domain Computation" (DDC) library aims to bring equivalent functionality to the C++ ecosystem. It uses a zero overhead abstraction approach, i.e. with labels fixed at compile-time, on top of different performant portable libraries, such as: Kokkos [@9485033, @9502936], Kokkos Kernels [@rajamanickam2021kokkos], kokkos-fft [@kokkos-fft] and Ginkgo [@GinkgoJoss2020]. Labelling at compile time is achieved by strongly typing dimensions, an approach similar to that used in units libraries such as mp-units [@Pusz_mp-units_2024], which strongly type quantities rather than dimensions.
5157

5258
The library is actively used to modernize the Fortran-based Gysela plasma simulation code [@Bourne_Gyselalib]. This simulation code relies heavily on high-dimensional arrays. While the data stored in the arrays has 7 dimensions, each dimension can have multiple representations, including Fourier, spline, Cartesian, and various curvilinear meshes. The legacy Fortran implementation, used to manipulate multi-dimensional arrays that stored slices of all the possible dimensions with very limited information about which dimensions were actually represented to enforce correctness at the API level. DDC enables a more explicit, strongly-typed representation of these arrays, ensuring at compile-time that function calls respect the expected dimensions. This reduces indexing errors and improves code maintainability, particularly in large-scale scientific software.
5359

@@ -95,7 +101,7 @@ The library provides several ways to group `DiscreteElement` into sets, each rep
95101

96102
### Multidimensional algorithms
97103

98-
Finally, DDC offers multidimensional algorithms to manipulate the containers and associated `DiscreteElement` indices such as parallel loops and reductions. The parallel versions are based on Kokkos providing performance portability. DDC also provides transform-based algorithms such as discrete Fourier transforms (via a Kokkos-fft wrapper) and spline transforms, enabling conversions between sampled data and coefficients in Fourier or B-spline bases over labeled dimensions.
104+
Finally, DDC offers multidimensional algorithms to manipulate the containers and associated `DiscreteElement` indices such as parallel loops and reductions. The parallel versions are based on Kokkos providing performance portability. DDC also provides transform-based algorithms such as discrete Fourier transforms (via a Kokkos-fft wrapper) and spline transforms [@10820764], enabling conversions between sampled data and coefficients in Fourier or B-spline bases over labeled dimensions.
99105

100106
## Acknowledgements
101107

0 commit comments

Comments
 (0)