52 return gpu_blas_.
dot_product(number_of_elements, vector_x, vector_y);
62 gpu_blas_.
axpy(number_of_elements, scaling_factor, vector_x, vector_y);
69 return gpu_blas_.
norm(number_of_elements, vector_x);
86 return local_kpoint_index;
105 return global_kpoint_grid;
112 int )
const override {
void reduce_within_pool_scalar(Real &) const override
gpu::blas::GPUBLAS & gpu_blas()
PlanewaveGPUExecutionPolicy(std::shared_ptr< gpu::device::GPUDeviceBackend > device_backend, gpu::blas::GPUBLAS &gpu_blas)
bool one_process_owns_complete_state() const override
Real norm(int number_of_elements, const ComplexValue *vector_x) const override
void reduce_vector(std::vector< Real > &) const override
int global_kpoint_index(int local_kpoint_index) const override
Identity: the single GPU process holds the global k-point grid in order.
void reduce_within_pool_vector(std::vector< Real > &) const override
void reduce_scalar_max(Real &) const override
std::vector< Real > assemble_global_kpoint_state_data(const std::vector< Real > &local_data, int, int, int) const override
std::unique_ptr< FFTGrid > create_fft_grid() const override
void reduce_scalar(Real &) const override
const gpu::blas::GPUBLAS & gpu_blas() const
void reduce_charge_density(std::vector< std::vector< Real > > &) const override
void reduce_band_group_scalar_min(int &) const override
bool each_process_owns_whole_kpoints() const override
The single GPU process holds every k-point whole.
void add_scaled_vector(int number_of_elements, ComplexValue scaling_factor, const ComplexValue *vector_x, ComplexValue *vector_y) const override
ComplexValue dot_product(int number_of_elements, const ComplexValue *vector_x, const ComplexValue *vector_y) const override
void reduce_scalar_min(Real &) const override
KPointsGrid local_kpoint_grid(const KPointsGrid &global_kpoint_grid) const override
void reduce_scalar_max(int &) const override
int number_of_pools() const override
const device::GPUDeviceBackend & device_backend() const
GPUExecutionPolicy(std::shared_ptr< device::GPUDeviceBackend > device_backend)
virtual void axpy(int number_of_elements, Complex scaling_factor, const Complex *vector_x, Complex *vector_y) const =0
virtual Complex dot_product(int number_of_elements, const Complex *vector_x, const Complex *vector_y) const =0
virtual double norm(int number_of_elements, const Complex *vector_x) const =0