7 : mat(mat), profile(profile){
40 for (
int i=0; i<N; i++) G[i] =
new Complex[N];
47 for (
int i=0; i<N; i++) {
48 double p2 =
norm2(*p[i]);
50 for (
int j=i+1; j<N; j++) {
57 for (
int i=0; i<N; i++) {
64 for (
int j=0; j<N; j++) {
65 for (
int k=j+1; k<N; k++) {
67 G[k][j] =
conj(G[j][k]);
72 for (
int i=0; i<N; i++) {
76 for (
int j=i+1; j<N; j++) if (abs(G[j][j]) >
abs(G[k][k])) k = j;
78 std::swap<Complex>(beta[k], beta[i]);
79 for (
int j=0; j<N; j++) std::swap<Complex>(G[k][j], G[i][j]);
83 for (
int j=i+1; j<N; j++) {
85 beta[j] -= xp * beta[i];
86 for (
int k=0; k<N; k++) G[j][k] -= xp * G[i][k];
92 for (
int i=N-1; i>=0; i--) {
94 for (
int j=i+1; j<N; j++) alpha[i] += G[i][j] * alpha[j];
95 alpha[i] = (beta[i]-alpha[i])/G[i][i];
102 printfQuda(
"MinResExt: N = %d, |res| / |src| = %e\n", N, rsd);
104 for (
int j=0; j<N; j++)
delete [] G[j];
void caxpyCuda(const Complex &a, cudaColorSpinorField &x, cudaColorSpinorField &y)
void operator()(cudaColorSpinorField &x, cudaColorSpinorField &b, cudaColorSpinorField **p, cudaColorSpinorField **q, int N)
__host__ __device__ ValueType sqrt(ValueType x)
std::complex< double > Complex
void mat(void *out, void **fatlink, void **longlink, void *in, double kappa, int dagger_bit, QudaPrecision sPrecision, QudaPrecision gPrecision)
Complex cDotProductCuda(cudaColorSpinorField &, cudaColorSpinorField &)
MinResExt(DiracMatrix &mat, TimeProfile &profile)
double reDotProductCuda(cudaColorSpinorField &a, cudaColorSpinorField &b)
void zeroCuda(cudaColorSpinorField &a)
__host__ __device__ ValueType abs(ValueType x)
__host__ __device__ ValueType conj(ValueType x)
void axCuda(const double &a, cudaColorSpinorField &x)
double norm2(const ColorSpinorField &)