1
0
mirror of https://github.com/paboyle/Grid.git synced 2025-04-25 05:05:56 +01:00

use gemm twice to complete the Gram Schmidt

This commit is contained in:
Yong-Chull Jang 2020-03-31 05:39:31 -04:00
parent ac7090e6d3
commit b89b1280d5

View File

@ -303,7 +303,7 @@ public:
//Glog << stat << std::endl; //Glog << stat << std::endl;
grid->GlobalSumVector((double*)c_acc,2*Nu*Nevec_acc); grid->GlobalSumVector((double*)c_acc,2*Nu*Nevec_acc);
#if 0
for (int i=0; i<Nu; ++i) { for (int i=0; i<Nu; ++i) {
for (size_t j=0; j<Nevec_acc; ++j) { for (size_t j=0; j<Nevec_acc; ++j) {
cuDoubleComplex z = c_acc[i*Nevec_acc+j]; cuDoubleComplex z = c_acc[i*Nevec_acc+j];
@ -314,10 +314,27 @@ public:
} }
w[i] = w[i] - ip * evec[b*Nevec_acc+j]; w[i] = w[i] - ip * evec[b*Nevec_acc+j];
} }
//assert(normalize(w[i],do_print)!=0); }
#else
alpha = make_cuDoubleComplex(-1.0,0.0);
beta = make_cuDoubleComplex(1.0,0.0);
stat = cublasZgemm(handle, CUBLAS_OP_N, CUBLAS_OP_N, 12*sites, Nu, Nevec_acc,
&alpha,
evec_acc, 12*sites, c_acc, Nevec_acc,
&beta,
w_acc, 12*sites);
//Glog << stat << std::endl;
#endif
}
#if 1
for (int col=0; col<Nu; ++col) {
auto w_v = w[col].View();
cuDoubleComplex *z = reinterpret_cast<cuDoubleComplex*>(&w_v[0]);
for (size_t row=0; row<sites*12; ++row) {
z[row] = w_acc[col*sites*12+row];
} }
} }
#endif
for (int i=0; i<Nu; ++i) { for (int i=0; i<Nu; ++i) {
assert(normalize(w[i],do_print)!=0); assert(normalize(w[i],do_print)!=0);
} }