33 std::shared_ptr<execution::gpu::device::GPUDeviceBackend>
device_backend)
43 bool use_measured_planning =
false)
override {
44 serial_fft_grid_.
init(dimension_1, dimension_2, dimension_3, use_measured_planning);
112 std::vector<Complex> temporary_buffer(
static_cast<size_t>(grid_points));
114 for (
int point_index = 0; point_index < grid_points; ++point_index) {
115 temporary_buffer[
static_cast<size_t>(point_index)] =
116 Complex(
static_cast<double>(data[point_index].real()),
117 static_cast<double>(data[point_index].imag()));
120 serial_fft_grid_.
forward(temporary_buffer.data());
122 for (
int point_index = 0; point_index < grid_points; ++point_index) {
124 static_cast<float>(temporary_buffer[
static_cast<size_t>(point_index)].real()),
125 static_cast<float>(temporary_buffer[
static_cast<size_t>(point_index)].imag()));
134 std::vector<Complex> temporary_buffer(
static_cast<size_t>(grid_points));
136 for (
int point_index = 0; point_index < grid_points; ++point_index) {
137 temporary_buffer[
static_cast<size_t>(point_index)] =
138 Complex(
static_cast<double>(data[point_index].real()),
139 static_cast<double>(data[point_index].imag()));
142 serial_fft_grid_.
inverse_raw(temporary_buffer.data());
144 for (
int point_index = 0; point_index < grid_points; ++point_index) {
146 static_cast<float>(temporary_buffer[
static_cast<size_t>(point_index)].real()),
147 static_cast<float>(temporary_buffer[
static_cast<size_t>(point_index)].imag()));
157 serial_fft_grid_.
forward(data);
171std::unique_ptr<GPUFFTGrid>
173 return std::make_unique<SYCLGPUFFTGrid>(std::move(device_backend));
void inverse(Complex *data) const override
int local_grid_points() const override
int local_offset() const override
void forward(Complex *data) const override
void execute_forward_on_buffers() const override
void reduce_g_space(Complex *, int) const override
int grid_dimension_3() const override
int grid_dimension_1() const override
void init(int dimension_1, int dimension_2, int dimension_3, bool use_measured_planning=false) override
void inverse_raw(Complex *data) const override
Complex * output_buffer() const override
Complex * input_buffer() const override
void execute_inverse_raw_on_buffers() const override
int total_grid_points() const override
int grid_dimension_2() const override
int g_vector_to_fft_grid_index(int miller_1, int miller_2, int miller_3) const override
void prepare_forward_from_output() const override
execution::gpu::device::GPUDeviceBackend & device_backend()
void init(int dimension_1, int dimension_2, int dimension_3, bool use_measured_planning=false) override
int local_grid_points() const override
int local_offset() const override
int grid_dimension_2() const override
void inverse_raw_single(ComplexSingle *data) const override
SYCLGPUFFTGrid(std::shared_ptr< execution::gpu::device::GPUDeviceBackend > device_backend)
void inverse_transform(Complex *data) const override
void execute_forward_on_buffers() const override
Complex * output_buffer() const override
int total_grid_points() const override
Complex * input_buffer() const override
void forward(Complex *data) const override
int grid_dimension_1() const override
void prepare_forward_from_output() const override
int grid_dimension_3() const override
~SYCLGPUFFTGrid() override=default
void forward_single(ComplexSingle *data) const override
void inverse_raw(Complex *data) const override
void reduce_g_space(Complex *data, int number_of_elements) const override
void forward_transform(Complex *data) const override
void execute_inverse_raw_on_buffers() const override
int g_vector_to_fft_grid_index(int miller_1, int miller_2, int miller_3) const override
void inverse(Complex *data) const override
std::unique_ptr< GPUFFTGrid > create_sycl_gpu_fft_grid(std::shared_ptr< execution::gpu::device::GPUDeviceBackend > device_backend)
std::complex< float > ComplexSingle
std::complex< double > Complex