CHROMA
|
#include <clover_term_llvm_w.h>
Public Types | |
typedef WordType< T >::Type_t | REALT |
typedef OLattice< PScalar< PScalar< RScalar< Word< REALT > > > > > | LatticeREAL |
typedef OScalar< PScalar< PScalar< RScalar< Word< REALT > > > > > | RealT |
using | DiagType = OLattice< PComp< PTriDia< RScalar< Word< REALT > > > > > |
using | OffDiagType = OLattice< PComp< PTriOff< RComplex< Word< REALT > > > > > |
Public Member Functions | |
LLVMCloverTermT () | |
Empty constructor. Must use create later. More... | |
~LLVMCloverTermT () | |
No real need for cleanup here. More... | |
void | create (Handle< FermState< T, multi1d< U >, multi1d< U > > > fs, const CloverFermActParams ¶m_) |
Creation routine. More... | |
virtual void | create (Handle< FermState< T, multi1d< U >, multi1d< U > > > fs, const CloverFermActParams ¶m_, const LLVMCloverTermT< T, U > &from_) |
void | choles (int cb) |
Computes the inverse of the term on cb using Cholesky. More... | |
Double | cholesDet (int cb) const |
Computes the inverse of the term on cb using Cholesky. More... | |
void | apply (T &chi, const T &psi, enum PlusMinus isign, int cb) const |
void | applySite (T &chi, const T &psi, enum PlusMinus isign, int site) const |
void | triacntr (U &B, int mat, int cb) const |
Calculates Tr_D ( Gamma_mat L ) More... | |
const FermBC< T, multi1d< U >, multi1d< U > > & | getFermBC () const |
Return the fermion BC object for this linear operator. More... | |
void | packForQUDA (multi1d< QUDAPackedClovSite< REALT > > &quda_pack, int cb) const |
PACK UP the Clover term for QUDA library: More... | |
int | getDiaId () const |
int | getOffId () const |
const DiagType & | getDiagBuffer () const |
const OffDiagType & | getOffDiagBuffer () const |
Public Member Functions inherited from Chroma::CloverTermBase< T, U > | |
virtual | ~CloverTermBase () |
No real need for cleanup here. More... | |
const Subset & | subset () const |
Subset is all here. More... | |
void | deriv (multi1d< U > &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const |
Take deriv of D. More... | |
void | deriv (multi1d< U > &ds_u, const T &chi, const T &psi, enum PlusMinus isign, int cb) const |
Take deriv of D. More... | |
void | derivMultipole (multi1d< U > &ds_u, const multi1d< T > &chi, const multi1d< T > &psi, enum PlusMinus isign) const |
Take deriv of D. More... | |
void | derivMultipole (multi1d< U > &ds_u, const multi1d< T > &chi, const multi1d< T > &psi, enum PlusMinus isign, int cb) const |
Take deriv of D. More... | |
void | derivTrLn (multi1d< U > &ds_u, enum PlusMinus isign, int cb) const |
Take derivative of TrLn D. More... | |
void | deriv_loops (const int u, const int mu, const int cb, U &ds_u_mu, U &ds_u_nu, const U &Lambda) const |
unsigned long | nFlops () const |
Return flops performed by the operator() More... | |
Public Member Functions inherited from Chroma::DslashLinearOperator< T, multi1d< U >, multi1d< U > > | |
virtual | ~DslashLinearOperator () |
Virtual destructor to help in cleanup. More... | |
virtual void | operator() (T &d, const T &psi, enum PlusMinus isign) const |
Apply operator on both checkerboards (entire lattice) More... | |
Public Member Functions inherited from Chroma::DiffLinearOperator< T, P, Q > | |
virtual | ~DiffLinearOperator () |
Virtual destructor to help with cleanup;. More... | |
virtual void | deriv (P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const |
Apply the derivative of the operator onto a source std::vector. More... | |
virtual void | deriv (P &ds_u, const T &chi, const T &psi, enum PlusMinus isign, const Real &epsilon) const |
Apply the derivative of the operator onto a source std::vector to some precision. More... | |
virtual void | derivMultipole (P &ds_u, const multi1d< T > &chi, const multi1d< T > &psi, enum PlusMinus isign) const |
Return the force for multiple poles. More... | |
Public Member Functions inherited from Chroma::LinearOperator< T > | |
virtual | ~LinearOperator () |
Virtual destructor to help with cleanup;. More... | |
virtual void | operator() (T &chi, const T &psi, enum PlusMinus isign, Real epsilon) const |
Apply the operator onto a source std::vector to some precision. More... | |
Protected Member Functions | |
void | makeClov (const multi1d< U > &f, const RealT &diag_mass) |
Create the clover term on cb. More... | |
void | ldagdlinv (LatticeREAL &tr_log_diag, int cb) |
Invert the clover term on cb. More... | |
const multi1d< U > & | getU () const |
Get the u field. More... | |
Real | getCloverCoeff (int mu, int nu) const |
Calculates Tr_D ( Gamma_mat L ) More... | |
Private Attributes | |
Handle< FermBC< T, multi1d< U >, multi1d< U > > > | fbc |
multi1d< U > | u |
CloverFermActParams | param |
LatticeREAL | tr_log_diag_ |
multi1d< bool > | choles_done |
OLattice< PComp< PTriDia< RScalar< Word< REALT > > > > > | tri_dia |
OLattice< PComp< PTriOff< RComplex< Word< REALT > > > > > | tri_off |
Definition at line 297 of file clover_term_llvm_w.h.
using Chroma::LLVMCloverTermT< T, U >::DiagType = OLattice<PComp<PTriDia<RScalar <Word<REALT> > > > > |
Definition at line 367 of file clover_term_llvm_w.h.
typedef OLattice< PScalar< PScalar< RScalar< Word< REALT> > > > > Chroma::LLVMCloverTermT< T, U >::LatticeREAL |
Definition at line 303 of file clover_term_llvm_w.h.
using Chroma::LLVMCloverTermT< T, U >::OffDiagType = OLattice<PComp<PTriOff<RComplex<Word<REALT> > > > > |
Definition at line 368 of file clover_term_llvm_w.h.
typedef WordType<T>::Type_t Chroma::LLVMCloverTermT< T, U >::REALT |
Definition at line 301 of file clover_term_llvm_w.h.
typedef OScalar< PScalar< PScalar< RScalar< Word< REALT> > > > > Chroma::LLVMCloverTermT< T, U >::RealT |
Definition at line 304 of file clover_term_llvm_w.h.
Chroma::LLVMCloverTermT< T, U >::LLVMCloverTermT |
Empty constructor. Must use create later.
Definition at line 409 of file clover_term_llvm_w.h.
|
inline |
No real need for cleanup here.
Definition at line 310 of file clover_term_llvm_w.h.
|
virtual |
Apply a dslash
Performs the operation
chi <- (L + D + L^dag) . psi
where L is a lower triangular matrix D is the real diagonal. (stored together in type TRIANG)
Arguments:
chi | result (Write) |
psi | source (Read) |
isign | D'^dag or D' ( MINUS | PLUS ) resp. (Read) |
cb | Checkerboard of OUTPUT std::vector (Read) |
Implements Chroma::DslashLinearOperator< T, multi1d< U >, multi1d< U > >.
Definition at line 1702 of file clover_term_llvm_w.h.
References Chroma::cb, Chroma::chi(), Chroma::END_CODE(), Chroma::function_apply_clov_build(), Chroma::function_apply_clov_exec(), Chroma::psi, and Chroma::START_CODE().
|
virtual |
Implements Chroma::CloverTermBase< T, U >.
Definition at line 1816 of file clover_term_llvm_w.h.
References Chroma::QDP_error_exit().
|
virtual |
Computes the inverse of the term on cb using Cholesky.
Invert.
cb | checkerboard of work (Read) |
Computes the inverse of the term on cb using Cholesky
Implements Chroma::CloverTermBase< T, U >.
Definition at line 819 of file clover_term_llvm_w.h.
References Chroma::cb, Chroma::END_CODE(), and Chroma::START_CODE().
|
virtual |
Computes the inverse of the term on cb using Cholesky.
Invert.
cb | checkerboard of work (Read) |
Computes the inverse of the term on cb using Cholesky
Implements Chroma::CloverTermBase< T, U >.
Definition at line 839 of file clover_term_llvm_w.h.
References Chroma::cb, Chroma::END_CODE(), Chroma::START_CODE(), and sum.
void Chroma::LLVMCloverTermT< T, U >::create | ( | Handle< FermState< T, multi1d< U >, multi1d< U > > > | fs, |
const CloverFermActParams & | param_ | ||
) |
Creation routine.
Definition at line 472 of file clover_term_llvm_w.h.
References Chroma::END_CODE(), Chroma::i, Chroma::mesField(), Nd, Chroma::START_CODE(), and Chroma::u.
|
virtual |
Definition at line 413 of file clover_term_llvm_w.h.
References Chroma::LLVMCloverTermT< T, U >::choles_done, Chroma::END_CODE(), Chroma::i, Nd, Chroma::START_CODE(), Chroma::LLVMCloverTermT< T, U >::tr_log_diag_, Chroma::LLVMCloverTermT< T, U >::tri_dia, Chroma::LLVMCloverTermT< T, U >::tri_off, and Chroma::u.
|
protectedvirtual |
Calculates Tr_D ( Gamma_mat L )
Returns the appropriate clover coefficient for indices mu and nu.
Implements Chroma::CloverTermBase< T, U >.
Definition at line 1550 of file clover_term_llvm_w.h.
References Chroma::END_CODE(), mu, nu, and Chroma::START_CODE().
|
inline |
Definition at line 370 of file clover_term_llvm_w.h.
References Chroma::LLVMCloverTermT< T, U >::tri_dia.
|
inline |
Definition at line 364 of file clover_term_llvm_w.h.
References Chroma::LLVMCloverTermT< T, U >::tri_dia.
|
inlinevirtual |
Return the fermion BC object for this linear operator.
Implements Chroma::DslashLinearOperator< T, multi1d< U >, multi1d< U > >.
Definition at line 359 of file clover_term_llvm_w.h.
References Chroma::LLVMCloverTermT< T, U >::fbc.
|
inline |
Definition at line 371 of file clover_term_llvm_w.h.
References Chroma::LLVMCloverTermT< T, U >::tri_off.
|
inline |
Definition at line 365 of file clover_term_llvm_w.h.
References Chroma::LLVMCloverTermT< T, U >::tri_off.
|
inlineprotectedvirtual |
Get the u field.
Implements Chroma::CloverTermBase< T, U >.
Definition at line 386 of file clover_term_llvm_w.h.
References Chroma::LLVMCloverTermT< T, U >::u.
|
protected |
Invert the clover term on cb.
An LDL^\dag decomposition and inversion?
Definition at line 1076 of file clover_term_llvm_w.h.
References Chroma::cb, Chroma::END_CODE(), Chroma::function_ldagdlinv_exec(), Chroma::START_CODE(), and Chroma::zero.
|
protected |
Create the clover term on cb.
f | field strength tensor F(mu,nu) (Read) |
cb | checkerboard (Read) |
Definition at line 777 of file clover_term_llvm_w.h.
References Chroma::END_CODE(), std::tr1::f1, std::tr1::f2, std::tr1::f3, std::tr1::f4, std::tr1::f5, Chroma::function_make_clov_build(), Chroma::function_make_clov_exec(), Nd, and Chroma::START_CODE().
void Chroma::LLVMCloverTermT< T, U >::packForQUDA | ( | multi1d< QUDAPackedClovSite< REALT > > & | quda_pack, |
int | cb | ||
) | const |
PACK UP the Clover term for QUDA library:
Definition at line 1795 of file clover_term_llvm_w.h.
References Chroma::cb, QDP::PackForQUDATimer::get(), and QDP::PackForQUDATimer::Instance().
|
virtual |
Calculates Tr_D ( Gamma_mat L )
Implements Chroma::CloverTermBase< T, U >.
Definition at line 1520 of file clover_term_llvm_w.h.
References Chroma::cb, Chroma::END_CODE(), Chroma::function_triacntr_exec(), Chroma::START_CODE(), and Chroma::zero.
|
private |
Definition at line 398 of file clover_term_llvm_w.h.
Referenced by Chroma::LLVMCloverTermT< T, U >::create().
|
private |
Definition at line 393 of file clover_term_llvm_w.h.
Referenced by Chroma::LLVMCloverTermT< T, U >::getFermBC().
|
private |
Definition at line 395 of file clover_term_llvm_w.h.
|
private |
Definition at line 396 of file clover_term_llvm_w.h.
Referenced by Chroma::LLVMCloverTermT< T, U >::create().
|
private |
Definition at line 401 of file clover_term_llvm_w.h.
Referenced by Chroma::LLVMCloverTermT< T, U >::create(), Chroma::LLVMCloverTermT< T, U >::getDiagBuffer(), and Chroma::LLVMCloverTermT< T, U >::getDiaId().
|
private |
Definition at line 402 of file clover_term_llvm_w.h.
Referenced by Chroma::LLVMCloverTermT< T, U >::create(), Chroma::LLVMCloverTermT< T, U >::getOffDiagBuffer(), and Chroma::LLVMCloverTermT< T, U >::getOffId().
|
private |
Definition at line 394 of file clover_term_llvm_w.h.
Referenced by Chroma::LLVMCloverTermT< T, U >::getU().