You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
3d FFT library with MPI and GPU-Support, backends include fftw, mkl, cufft, ...
Probably faster than the custom stuff in ESPResSo
The API is uncomplicated
build sysem based on CMake
Integration in ESPResSo
The library requires the data to be transformed to be contiguous, as far as I understand
The data in ESPResSo
is contiguous in k-space
not contiguous in real-space, because then, there are halo regions for the charge assignment
This mixture of data layouts seems to be handled within the 3d FFT code ESPResSo, which selectively skips the halo regions in the forward transform and leaves space for them in the back transform.
Short term strategy
Copy the real space grid without halo into a a contigious region before transforming
This way, the FFTBufferLegacy class does not have to be replaced at the same time
Leave teh back-transofmr unchanged. This way, we can see, if the switch to Heffte is worth it
Notes
The real space array (holding the charges) has halo layers. Including the halo layers, the storage is contiguous and ROW_MAJOR. This can be inferred from p3m/interpolation.hpp:p3m_calculate_interpolation_weights()
The k-space charge density is contiguous, as can be inferred form the loop boundaries the long rnage kernels
The actual buffer size (storaage alocated for rs_scalar) is determined by what the current 3d fft requires, whcih can be more then the mesh size+halo layers cubed
The text was updated successfully, but these errors were encountered:
Overview
Integration in ESPResSo
Short term strategy
Notes
The text was updated successfully, but these errors were encountered: