60 typedef typename Field::scalar_type
scalar;
96 std::cout <<
GridLogMessage <<
" Allocate for "<<
nev<<
" eigenvectors and volume "<<
vol<<std::endl;
101 assert(ev<
eval.size());
114 void ImportEigenBasis(std::vector<Field> &evec,std::vector<RealD> &_eval,
int _ev0,
int _nev)
116 assert(_ev0+_nev<=evec.size());
121 for(
int e=0;e<
nev;e++){
122 std::cout <<
"Importing eigenvector "<<e<<
" evalue "<<_eval[_ev0+e]<<std::endl;
128 int nrhs = source.size();
129 assert(source.size()==guess.size());
146 for(
int r=0;r<nrhs;r++){
147 int64_t offset = r*vw;
194 std::vector<scalar> HOST_C(
BLAS_C.size());
196 grid->GlobalSumVector(&HOST_C[0],
nev*nrhs);
197 for(
int e=0;e<
nev;e++){
199 for(
int r=0;r<nrhs;r++){
201 HOST_C[off]=HOST_C[off] * lam;
223 for(
int r=0;r<nrhs;r++){
224 int64_t offset = r*vw;
229 std::cout <<
GridLogMessage <<
"MultiRHSDeflation for "<<nrhs<<
" sources with "<<
nev<<
" eigenvectors took " << (t1-t0)/1e3 <<
" ms"<<std::endl;
void acceleratorPut(T &dev, const T &host)
void acceleratorCopyToDevice(void *from, void *to, size_t bytes)
void acceleratorCopyDeviceToDevice(void *from, void *to, size_t bytes)
void acceleratorCopyFromDevice(void *from, void *to, size_t bytes)
std::vector< T, devAllocator< T > > deviceVector
#define autoView(l_v, l, mode)
GridLogger GridLogMessage(1, "Message", GridLogColours, "NORMAL")
#define NAMESPACE_BEGIN(A)
void gemmBatched(int m, int n, int k, ComplexD alpha, deviceVector< ComplexD * > &Amk, deviceVector< ComplexD * > &Bkn, ComplexD beta, deviceVector< ComplexD * > &Cmn)
Field::scalar_object scalar_object
void Allocate(int _nev, GridBase *_grid)
deviceVector< scalar > BLAS_R
void ImportEigenVector(Field &evec, RealD &_eval, int ev)
deviceVector< scalar > BLAS_E
void DeflateSources(std::vector< Field > &source, std::vector< Field > &guess)
deviceVector< scalar > BLAS_C
Field::scalar_type scalar
std::vector< RealD > eval
void ImportEigenBasis(std::vector< Field > &evec, std::vector< RealD > &_eval, int _ev0, int _nev)
deviceVector< scalar > BLAS_G
void ImportEigenBasis(std::vector< Field > &evec, std::vector< RealD > &_eval)