24 init(
int dimension_1,
int dimension_2,
int dimension_3,
bool use_measured_planning =
false) = 0;
97 [[nodiscard]]
virtual bool owns_stick(
int ,
int )
const {
124 std::size_t offset =
static_cast<std::size_t
>(
local_offset()) *
127 std::memcpy(local_g_space,
128 full_g_space + offset,
134 std::size_t offset =
static_cast<std::size_t
>(
local_offset()) *
137 std::memcpy(full_g_space + offset,
161 [[nodiscard]]
virtual int
293 bool =
false)
const {
321 for (
int transform_index = 0; transform_index < batch_size; ++transform_index) {
322 forward(data + transform_index * stride);
336 for (
int transform_index = 0; transform_index < batch_size; ++transform_index) {
virtual void assign_sticks(const std::vector< int > &)
virtual Complex * slot_input_buffer(int) const
virtual int g_vector_to_fft_grid_index(int miller_1, int miller_2, int miller_3) const =0
virtual void initialize_batched_plans(int, bool=false) const
virtual void inverse_raw_on_slot(Complex *data, int) const
virtual void execute_forward_on_buffers() const =0
virtual int concurrent_transform_slots() const
virtual void scatter_local_g_space(const Complex *local_g_space, Complex *full_g_space) const
The reverse: place this rank's reciprocal-space points into a full array.
virtual int local_g_space_points() const
virtual Complex * slot_output_buffer(int) const
virtual void gather_local_g_space(const Complex *full_g_space, Complex *local_g_space) const
virtual void prepare_forward_from_output_on_slot(int) const
Output-to-input copy on slot slot, the slot-aware prepare_forward_from_output().
virtual void execute_inverse_raw_on_slot(int) const
Inverse transform on slot slot, the slot-aware execute_inverse_raw_on_buffers().
virtual int initialized_batched_plan_size() const
virtual void reduce_g_space(Complex *data, int number_of_elements) const =0
virtual void prepare_forward_from_output() const =0
virtual void forward_batched(Complex *data, int batch_size) const
virtual Complex * input_buffer() const =0
virtual void forward(Complex *data) const =0
virtual int global_real_space_index(int local_index) const
virtual int total_grid_points() const =0
virtual int grid_dimension_1() const =0
virtual bool owns_stick(int, int) const
virtual bool co_locates_mirrors() const
virtual int slab_dimension_1() const
virtual ~FFTGrid()=default
virtual void inverse_raw(Complex *data) const =0
virtual int grid_dimension_3() const =0
virtual void inverse_raw_batched(Complex *data, int batch_size) const
virtual int local_offset() const =0
virtual Complex * output_buffer() const =0
virtual void inverse(Complex *data) const =0
virtual void execute_inverse_raw_on_buffers() const =0
virtual int grid_dimension_2() const =0
virtual void init(int dimension_1, int dimension_2, int dimension_3, bool use_measured_planning=false)=0
virtual void execute_forward_on_slot(int) const
Forward transform on slot slot, the slot-aware execute_forward_on_buffers().
virtual int local_grid_points() const =0
std::complex< double > Complex