Skip to content

Commit f89e4eb

Browse files
author
Yuuichi Asahi
committed
Add references in Statement Of Need
1 parent c9d3ad6 commit f89e4eb

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

paper/paper.bib

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,25 @@ @Article{Harris2020
6060
url = {https://doi.org/10.1038/s41586-020-2649-2}
6161
}
6262

63+
@article{Mohanan2019,
64+
abstract = {The Python package fluidfft provides a common Python API for performing Fast Fourier Transforms (FFT) in sequential, in parallel and on GPU with different FFT libraries (FFTW, P3DFFT, PFFT, cuFFT). fluidfft is a comprehensive FFT framework which allows Python users to easily and efficiently perform FFT and the associated tasks, such as computing linear operators and energy spectra. We describe the architecture of the package composed of C++ and Cython FFT classes, Python “operator” classes and Pythran functions. The package supplies utilities to easily test itself and benchmark the different FFT solutions for a particular case and on a particular machine. We present a performance scaling analysis on three different computing clusters and a microbenchmark showing that fluidfft is an interesting solution to write efficient Python applications using FFT. Funding statement: This project has indirectly benefited from funding from the foundation Simone et Cino Del Duca de l’Institut de France, the European Research Council (ERC) under the European Union’s Horizon 2020 research and innovation program (grant agreement No 647018-WATU and Euhit consortium) and the Swedish Research Council (Vetenskapsrådet): 2013–5191. We have also been able to use supercomputers of CIMENT/GRICAD, CINES/GENCI (grant 2018-A0040107567) and the Swedish National Infrastructure for Computing (SNIC).},
65+
author = {Mohanan, Ashwin Vishnu and Bonamy, Cyrille and Augier, Pierre},
66+
doi = {10.5334/jors.238},
67+
journal = {Journal of Open Research Software},
68+
keyword = {en_US},
69+
month = {Apr},
70+
title = {FluidFFT: Common API (C++ and Python) for Fast Fourier Transform HPC Libraries},
71+
year = {2019}
72+
}
73+
74+
@software{jax2018github,
75+
author = {James Bradbury and Roy Frostig and Peter Hawkins and Matthew James Johnson and Chris Leary and Dougal Maclaurin and George Necula and Adam Paszke and Jake Vander{P}las and Skye Wanderman-{M}ilne and Qiao Zhang},
76+
title = {{JAX}: composable transformations of {P}ython+{N}um{P}y programs},
77+
url = {http://github.com/jax-ml/jax},
78+
version = {0.3.13},
79+
year = {2018},
80+
}
81+
6382
@article{Wakatani1984,
6483
author = {Wakatani, Masahiro and Hasegawa, Akira},
6584
title = {A collisional drift wave description of plasma edge turbulence},

paper/paper.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ FFT libraries for the enabled Kokkos backend are executed on the stream/queue us
7171

7272
* Compile time and/or runtime errors for invalid usage (e.g. `View` extents mismatch).
7373

74+
There already exists a couple of libraries to offer common APIs over performant vendor FFT libraries. Relying on data structures in Python, these APIs are offered by a dedicated FFT library like FluidFFT [@Mohanan2019] or a more general library offering GPU acceleration like Jax [@jax2018github]. In C++, offering this kind of APIs is non-trivial because of the lack of standard data structures with extents and/or data locations. Thanks to [Kokkos Views](https://kokkos.org/kokkos-core-wiki/API/core/view/view.html) and [`ExecutionSpace`](https://kokkos.org/kokkos-core-wiki/API/core/execution_spaces.html), we can offer simple and safe APIs, which is the unique feature of this library.
75+
7476
# How to use kokkos-fft
7577

7678
For those who are familiar with [`numpy.fft`](https://numpy.org/doc/stable/reference/routines.fft.html), you may use kokkos-fft quite easily. In fact, all of the numpy.fft functions (`numpy.fft.<function_name>`) have an analogous counterpart in kokkos-fft (`KokkosFFT::<function_name>`), which can run on the Kokkos device. In addition, kokkos-fft supports [in-place transform](https://kokkosfft.readthedocs.io/en/latest/intro/using.html#inplace-transform) and [plan reuse](https://kokkosfft.readthedocs.io/en/latest/intro/using.html#reuse-fft-plan) capabilities.

0 commit comments

Comments
 (0)