52 cur_dim(cur_dim), use_inv_ritz(false), location(param.location) {
54 if(param.
nk == 0 || param.
np == 0 || (param.
np % param.
nk != 0))
errorQuda(
"\nIncorrect deflation space parameters...\n");
57 ld = ((tot_dim+15) / 16) *
tot_dim;
60 invRitzVals =
new double[
tot_dim];
63 if(RV->
IsComposite() ==
false)
errorQuda(
"\nRitz vectors must be contained in a composite field.\n");
65 cudaHostRegister(matProj,ld*tot_dim*
sizeof(
Complex),cudaHostRegisterDefault);
69 cudaHostUnregister(matProj);
170 double flops()
const;
198 if (defl)
delete defl;
199 if (deflParam)
delete deflParam;
int size()
return deflation space size
virtual ~deflated_solver()
DiracMatrix & matDeflation
__device__ void reduce(ReduceArg< T > arg, const T &in, const int idx=0)
DeflationParam * deflParam
bool is_complete()
Test whether the deflation space is complete and therefore cannot be further extended.
std::complex< double > Complex
QudaFieldLocation location
ColorSpinorField * Av_sloppy
enum QudaFieldLocation_s QudaFieldLocation
cpuColorSpinorField * out
DeflationParam(QudaEigParam ¶m, ColorSpinorField *RV, DiracMatrix &matDeflation, int cur_dim=0)
ColorSpinorField * r_sloppy
QudaEigParam & eig_global