32 #if (!defined(HEX_GPUPRECONDITIONER_H) && defined(WITH_OPENCL)) 33 #define HEX_GPUPRECONDITIONER_H 45 #include "hex-arrays.h" 46 #include "hex-matrix.h" 81 void hdflink (
const char * file);
84 bool hdfload (
const char * file =
nullptr);
87 bool hdfsave (
const char * file =
nullptr)
const;
90 RowMatrix<Complex> invCl_invsqrtS, invsqrtS_Cl;
111 Bspline const & bspline_panel_x,
112 Bspline const & bspline_panel_y
141 virtual void setup ();
143 virtual void multiply (BlockArray<Complex>
const & p, BlockArray<Complex> & q, MatrixSelection::Selection tri)
const;
144 virtual void precondition (BlockArray<Complex>
const & r, BlockArray<Complex> & z)
const;
clArray< Complex > tmA_
Definition: GPUPreconditioner.h:174
clArrayView< Complex > D_inner_p_
Definition: GPUPreconditioner.h:178
cl_mem_flags smallDataFlags_
Definition: GPUPreconditioner.h:160
clArrayView< Complex > t_inner_p_
Definition: GPUPreconditioner.h:176
virtual std::string description() const
Description of the preconditioner.
Definition: GPUPreconditioner.cpp:62
cl_mem_flags largeDataFlags_
Definition: GPUPreconditioner.h:161
cl_kernel norm_
Definition: GPUPreconditioner.h:169
GPUCGPreconditioner()
Definition: GPUPreconditioner.h:100
clArray< Complex > tmp_
Definition: GPUPreconditioner.h:174
B-spline environment.
Definition: bspline.h:57
cl_kernel spro_
Definition: GPUPreconditioner.h:170
Data
Definition: GPUPreconditioner.h:97
cl_kernel mml2_dcpl_
Definition: GPUPreconditioner.h:166
virtual void finish()
Clean up memory etc.
Definition: GPUPreconditioner.cpp:841
Angular basis.
Definition: ang.h:44
cl_kernel mml1_
Definition: GPUPreconditioner.h:165
virtual void update(Real E)
Update the preconditioner for the next energy.
Definition: NoPreconditioner.cpp:498
preconditionerRunTimeSelectionDefinitions(GPUCGPreconditioner, "GPU") typedef struct sData
Definition: GPUPreconditioner.h:76
cl_kernel axby_
Definition: GPUPreconditioner.h:168
cl_kernel mml2_dcpl_offset_
Definition: GPUPreconditioner.h:167
cl_device_id device_
Definition: GPUPreconditioner.h:150
Command line parameters.
Definition: io.h:57
std::size_t Nlocal_
Definition: GPUPreconditioner.h:156
std::vector< clArrayView< Complex > > M_L_inner_a_
Definition: GPUPreconditioner.h:179
clArrayView< Complex > Mm2_inner_a_
Definition: GPUPreconditioner.h:177
virtual void multiply(BlockArray< Complex > const &p, BlockArray< Complex > &q, MatrixSelection::Selection tri) const
Multiply by the matrix equation.
Definition: GPUPreconditioner.cpp:389
cl_short nsrcseg_
Definition: GPUPreconditioner.h:184
cl_kernel mml2_cpld_
Definition: GPUPreconditioner.h:166
KPACGPreconditioner(CommandLine const &cmd, InputFile const &inp, Parallel const &par, AngularBasis const &ang, Bspline const &bspline_inner, Bspline const &bspline_full, Bspline const &bspline_panel_x, Bspline const &bspline_panel_y)
Definition: KPAPreconditioner.h:78
cl_program program_
Definition: GPUPreconditioner.h:153
virtual void precondition(BlockArray< Complex > const &r, BlockArray< Complex > &z) const
Precondition the equation.
Definition: GPUPreconditioner.cpp:516
cl_kernel krdv_
Definition: GPUPreconditioner.h:171
virtual void rhs(BlockArray< Complex > &chi, int ienergy, int instate) const
Calculate the right-hand side.
Definition: NoPreconditioner.cpp:821
std::size_t blocksize_
Definition: GPUPreconditioner.h:157
KPA-preconditioned CG-preconditioner.
Definition: GPUPreconditioner.h:71
clArrayView< Complex > D_inner_a_
Definition: GPUPreconditioner.h:177
clArrayView< Complex > Mm1_inner_p_
Definition: GPUPreconditioner.h:178
MPI info.
Definition: parallel.h:50
cl_kernel mabt_
Definition: GPUPreconditioner.h:164
cl_platform_id platform_
Definition: GPUPreconditioner.h:149
clArrayView< Complex > Mm1_inner_a_
Definition: GPUPreconditioner.h:177
KPA-preconditioned CG-preconditioner.
Definition: KPAPreconditioner.h:66
cl_command_queue queue_
Definition: GPUPreconditioner.h:152
std::vector< clArrayView< Complex > > M_mLm1_inner_p_
Definition: GPUPreconditioner.h:180
cl_context context_
Definition: GPUPreconditioner.h:151
clArrayView< Complex > S_inner_p_
Definition: GPUPreconditioner.h:178
clArray< Real > nrm_
Definition: GPUPreconditioner.h:175
cl_kernel mml2_cpld_offset_
Definition: GPUPreconditioner.h:167
std::vector< clArrayView< Complex > > R_coupled_x_
Definition: GPUPreconditioner.h:182
clArrayView< Complex > t_inner_a_
Definition: GPUPreconditioner.h:176
clArrayView< Complex > Mm2_inner_p_
Definition: GPUPreconditioner.h:178
std::vector< clArrayView< LU_int_t > > R_coupled_p_
Definition: GPUPreconditioner.h:181
cl_short ndstseg_
Definition: GPUPreconditioner.h:184
virtual void setup()
Initialize the preconditioner.
Definition: GPUPreconditioner.cpp:70
clArrayView< Complex > S_inner_a_
Definition: GPUPreconditioner.h:177
std::vector< clArrayView< Complex > > M_L_inner_p_
Definition: GPUPreconditioner.h:180
std::vector< clArrayView< Complex > > M_mLm1_inner_a_
Definition: GPUPreconditioner.h:179
std::vector< clArrayView< LU_int_t > > R_coupled_i_
Definition: GPUPreconditioner.h:181
CGPreconditioner(CommandLine const &cmd, InputFile const &inp, Parallel const &par, AngularBasis const &ang, Bspline const &bspline_inner, Bspline const &bspline_full, Bspline const &bspline_panel_x, Bspline const &bspline_panel_y)
Definition: CGPreconditioner.h:60