![]() |
ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
|
#include <config/config.hpp>#include "p3m/P3MFFTBackendFactory.hpp"#include <utils/Vector.hpp>#include <boost/mpi/communicator.hpp>#include <memory>
Include dependency graph for P3MFFTBackendFactory.cpp:Go to the source code of this file.
Functions | |
| template<typename FloatType > | |
| std::shared_ptr< P3MFFTBackend< FloatType, P3MFFTKokkosConfig > > | make_p3m_kokkos_fft_backend (boost::mpi::communicator const &comm, Utils::Vector3i const &global_mesh, Utils::Vector3i const &rs_local_ld_index, Utils::Vector3i const &rs_local_ur_index, Utils::Vector3i const &node_grid) |
Build the single-rank kokkos-fft backend (P3MFFTKokkos) when it can serve this run, i.e. | |
| template std::shared_ptr< P3MFFTBackend< float, P3MFFTKokkosConfig > > | make_p3m_kokkos_fft_backend< float > (boost::mpi::communicator const &, Utils::Vector3i const &, Utils::Vector3i const &, Utils::Vector3i const &, Utils::Vector3i const &) |
| template std::shared_ptr< P3MFFTBackend< double, P3MFFTKokkosConfig > > | make_p3m_kokkos_fft_backend< double > (boost::mpi::communicator const &, Utils::Vector3i const &, Utils::Vector3i const &, Utils::Vector3i const &, Utils::Vector3i const &) |
| std::shared_ptr< P3MFFTBackend< FloatType, P3MFFTKokkosConfig > > make_p3m_kokkos_fft_backend | ( | boost::mpi::communicator const & | comm, |
| Utils::Vector3i const & | global_mesh, | ||
| Utils::Vector3i const & | rs_local_ld_index, | ||
| Utils::Vector3i const & | rs_local_ur_index, | ||
| Utils::Vector3i const & | node_grid | ||
| ) |
Build the single-rank kokkos-fft backend (P3MFFTKokkos) when it can serve this run, i.e.
when ESPResSo was built with kokkos-fft support and the communicator spans a single MPI rank; return nullptr otherwise so the caller falls back to heFFTe.
Defined once, in a translation unit of the espresso_p3m target – the only scope where the ESPRESSO_KOKKOS_FFT compile definition exists. The templated P3M solver calls this function instead of branching on the macro itself, so every translation unit that instantiates the solver (including unit tests, which are compiled without the macro) agrees on one definition and on the backend-selection behaviour.
Definition at line 38 of file P3MFFTBackendFactory.cpp.
References stream.
| template std::shared_ptr< P3MFFTBackend< double, P3MFFTKokkosConfig > > make_p3m_kokkos_fft_backend< double > | ( | boost::mpi::communicator const & | , |
| Utils::Vector3i const & | , | ||
| Utils::Vector3i const & | , | ||
| Utils::Vector3i const & | , | ||
| Utils::Vector3i const & | |||
| ) |
| template std::shared_ptr< P3MFFTBackend< float, P3MFFTKokkosConfig > > make_p3m_kokkos_fft_backend< float > | ( | boost::mpi::communicator const & | , |
| Utils::Vector3i const & | , | ||
| Utils::Vector3i const & | , | ||
| Utils::Vector3i const & | , | ||
| Utils::Vector3i const & | |||
| ) |