Skip to content

Commit

Permalink
Trying to find a memory leak with valgrind...EJB
Browse files Browse the repository at this point in the history
  • Loading branch information
ebylaska committed Dec 11, 2023
1 parent 83a0181 commit d1a8ece
Show file tree
Hide file tree
Showing 24 changed files with 1,348 additions and 1,052 deletions.
35 changes: 25 additions & 10 deletions Nwpw/band/cpsd/band_cpsd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -381,7 +381,24 @@ int band_cpsd(MPI_Comm comm_world0, std::string &rtdbstring)
if (myparallel.is_master()) seconds(&cpu3);
if (oprint) { std::cout << " >>> iteration ended at " << util_date() << " <<<\n"; }

// |***************************|
/* diagonalize the hamiltonian */
//mygrid.m_diagonalize(hml, eig);


/* calculate real-space number of electrons, en */
{
double omega = mylattice.omega();
double scal1 = 1.0/((double)((mygrid.nx) * (mygrid.ny) * (mygrid.nz)));
double dv = omega * scal1;

en[0] = dv*mygrid.r_dsum(dn);
en[1] = en[0];
if (ispin>1)
en[1] = dv*mygrid.r_dsum(dn + mygrid.nfft3d);
}


// |***************************|
// ****************** report summary of results **********************
// |***************************|
if (oprint)
Expand Down Expand Up @@ -493,20 +510,11 @@ int band_cpsd(MPI_Comm comm_world0, std::string &rtdbstring)
}
}






// write wavefunctions
version = 5;
nfft[0] = mygrid.nx;
nfft[1] = mygrid.ny;
nfft[2] = mygrid.nz;
std::cout << "version=" << version<< std::endl;
std::cout << "nfft=" << nfft[0] << " " << nfft[1] << " " << nfft[2] << std::endl;
std::cout << "ispin=" << ispin << std::endl;
std::cout << "ne=" << ne[0] << " " << ne[1] << std::endl;
cpsi_write(&mygrid,&version,nfft,mylattice.unita_ptr(),&mygrid.ispin,mygrid.ne,&mygrid.nbrillouin,psi1,control.output_movecs_filename(),std::cout);


Expand All @@ -516,12 +524,19 @@ int band_cpsd(MPI_Comm comm_world0, std::string &rtdbstring)
<< " taskid_j=" << myparallel.taskid_j()
<< " taskid_k=" << myparallel.taskid_k() << std::endl;
mygrid.g_deallocate(psi1);
std::cout << "B dealloc" << std::endl;
mygrid.g_deallocate(psi2);
std::cout << "C dealloc" << std::endl;
mygrid.g_deallocate(Hpsi);
std::cout << "D dealloc" << std::endl;
mygrid.h_deallocate(psi_r);
std::cout << "E dealloc" << std::endl;
mygrid.r_dealloc(dn);
std::cout << "F dealloc" << std::endl;
mygrid.w_deallocate(hml);
std::cout << "G dealloc" << std::endl;
mygrid.w_deallocate(lmbda);
std::cout << "H dealloc" << std::endl;
delete [] eig;
//mygrid.d3db::mygdevice.psi_dealloc();

Expand Down
95 changes: 63 additions & 32 deletions Nwpw/band/cpsd/band_inner_loop.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,46 +29,46 @@ void band_inner_loop(Control2 &control, Cneb *mygrid, Ion *myion,
double *psi_r, double *dn, double *hml, double *lmbda,
double E[], double *deltae, double *deltac, double *deltar)
{
int it, it_in, i, n2ft3d, neall, ispin, k, ms;
int shift1, shift2, indx1, indx2;
int it, it_in, i, k, ms;
int indx1, indx2;
int one = 1;
double scal1, scal2, dv, dc;
double dc;
double eorbit, eion, econstraint, exc, ehartr, pxc;
double eke, elocal, enlocal, dt, dte, Eold;
double *vl,*vc,*xcp,*xce,*dnall,*x,*dng,*rho,*tmp,*vcall,*vpsi,*sumi;
double *fion;
bool move = control.geometry_optimize();
double omega = mygrid->lattice->omega();

ispin = mygrid->ispin;
neall = mygrid->neq[0] + mygrid->neq[1];
shift1 = 2*(mygrid->npack(1));
shift2 = (mygrid->n2ft3d);
n2ft3d = (mygrid->n2ft3d);
scal1 = 1.0/((double)((mygrid->nx) * (mygrid->ny) * (mygrid->nz)));
// scal2 = 1.0/lattice_omega();
// dv = lattice_omega()*scal1;
scal2 = 1.0/omega;
dv = omega*scal1;
int ispin = mygrid->ispin;
int neall = mygrid->neq[0] + mygrid->neq[1];
int shift1 = 2*(mygrid->npack(1));
int shift2 = (mygrid->n2ft3d);
int nfft3d = (mygrid->nfft3d);
int n2ft3d = (mygrid->n2ft3d);

double scal1 = 1.0/((double)((mygrid->nx) * (mygrid->ny) * (mygrid->nz)));
double scal2 = 1.0/omega;
double dv = omega*scal1;

dt = control.time_step();
dte = dt/sqrt(control.fake_mass());
it_in = control.loop(0);

/* allocate temporary memory */
rho = mygrid->r_alloc();
tmp = mygrid->r_alloc();
rho = mygrid->c_alloc();
tmp = mygrid->c_alloc();

xcp = mygrid->r_nalloc(ispin);
xce = mygrid->r_nalloc(ispin);
dnall = mygrid->r_nalloc(ispin);
x = mygrid->r_alloc();
dng = mygrid->c_pack_allocate(0);
vl = mygrid->c_pack_allocate(0);
x = mygrid->r_alloc();

vc = mygrid->c_pack_allocate(0);
dng = mygrid->c_pack_allocate(0);
vl = mygrid->c_pack_allocate(0);
vc = mygrid->c_pack_allocate(0);
vcall = mygrid->c_pack_allocate(0);

std::cout << "HERA" << std::endl;
vpsi = x;

//fion = new double[3 * (myion->nion)]();
Expand All @@ -77,7 +77,6 @@ void band_inner_loop(Control2 &control, Cneb *mygrid, Ion *myion,
/* generate local psp*/
mypsp->v_local(vl,false,dng,fion);

std::cout << "HERb" << std::endl;

// myewald->phafac();

Expand All @@ -87,7 +86,6 @@ void band_inner_loop(Control2 &control, Cneb *mygrid, Ion *myion,
{
mygrid->g_zero(Hpsi);
mygrid->gg_copy(psi2, psi1);
std::cout << "HERc" << std::endl;

if (move)
{
Expand All @@ -98,33 +96,56 @@ void band_inner_loop(Control2 &control, Cneb *mygrid, Ion *myion,
}

/* convert psi(G) to psi(r) - Expensive */
std::cout << "HERd" << std::endl;
mygrid->gh_fftb(psi1,psi_r);
std::cout << "HERe" << std::endl;

/* generate dn */
mygrid->hr_aSumSqr(scal2,psi_r,dn);
std::cout << "PSI_r= " ;
for (auto kk=0; kk<20; ++kk)
std::cout << psi_r[kk] << " ";
std::cout << std::endl;

std::cout << std::endl;
std::cout << "dn= " ;
for (auto kk=0; kk<20; ++kk)
std::cout << dn[kk] << " ";
std::cout << std::endl;
std::cout << std::endl;

/* generate dng */
mygrid->rrr_Sum(dn,dn+(ispin-1)*n2ft3d,rho);
mygrid->rr_SMul(scal1, rho, tmp);
mygrid->rc_pfft3f(0,tmp);
//mygrid->rc_fft3d(tmp);
mygrid->rrc_Sum(dn,dn+(ispin-1)*nfft3d,rho);
mygrid->rc_pfft3f(0,rho);

std::cout << "tmp= " ;
for (auto kk=0; kk<20; ++kk)
std::cout << rho[kk] << " ";
std::cout << std::endl;
std::cout << std::endl;

mygrid->cc_SMul(scal1, rho, tmp);

mygrid->c_pack(0,tmp);
mygrid->cc_pack_copy(0,tmp,dng);
//mygrid->c_pack_SMul(0,scal1, dng);

std::cout << "dng= " ;
for (auto kk=0; kk<20; ++kk)
std::cout << dng[kk] << " ";
std::cout << std::endl;
std::cout << std::endl;

/* generate dnall - used for semicore corrections */
if (mypsp->has_semicore())
{
if ((move) || (it == 0))
mypsp->semicore_density_update();
for (ms=0; ms<ispin; ++ms)
mygrid->rrr_SMulAdd(0.5,mypsp->semicore_density,dn+ms*n2ft3d,dnall+ms*n2ft3d);
mygrid->rrr_SMulAdd(0.5,mypsp->semicore_density,dn+ms*nfft3d,dnall+ms*nfft3d);
}
else
{
for (ms=0; ms<ispin; ++ms)
mygrid->rr_copy(dn+ms*n2ft3d, dnall+ms*n2ft3d);
mygrid->rr_copy(dn+ms*nfft3d, dnall+ms*nfft3d);
}

/* generate local potentials */
Expand Down Expand Up @@ -273,16 +294,26 @@ void band_inner_loop(Control2 &control, Cneb *mygrid, Ion *myion,

//delete[] fion;

mygrid->r_dealloc(tmp);
std::cout << "A dealloc" << std::endl;
mygrid->c_dealloc(tmp);
std::cout << "b dealloc" << std::endl;
mygrid->r_dealloc(xcp);
std::cout << "c dealloc" << std::endl;
mygrid->r_dealloc(xce);
std::cout << "d dealloc" << std::endl;
mygrid->r_dealloc(dnall);
std::cout << "e dealloc" << std::endl;
mygrid->r_dealloc(x);
mygrid->r_dealloc(rho);
std::cout << "f dealloc" << std::endl;
mygrid->c_dealloc(rho);
std::cout << "g dealloc" << std::endl;
mygrid->c_pack_deallocate(dng);
std::cout << "h dealloc" << std::endl;
mygrid->c_pack_deallocate(vl);

std::cout << "i dealloc" << std::endl;
mygrid->c_pack_deallocate(vc);
std::cout << "j dealloc" << std::endl;
mygrid->c_pack_deallocate(vcall);

}
Expand Down
19 changes: 16 additions & 3 deletions Nwpw/band/lib/cCoulomb/cCoulomb.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ namespace pwdft {
*******************************************/
cCoulomb_Operator::cCoulomb_Operator(Cneb *mygrid, Control2 &control)
{
int k, pzero, zero, taskid;
int pzero, zero, taskid;
double gg;
double *Gx = mygrid->Gxyz(0);
double *Gy = mygrid->Gxyz(1);
Expand All @@ -58,16 +58,26 @@ cCoulomb_Operator::cCoulomb_Operator(Cneb *mygrid, Control2 &control)
pzero = mycneb->cijktop(0, 0, 0);
zero = mycneb->cijktoindex(0, 0, 0);

for (k = 0; k < (mycneb->nfft3d); ++k)
for (auto k=0; k<(mycneb->nfft3d); ++k)
{
gg = Gx[k]*Gx[k] + Gy[k]*Gy[k] + Gz[k]*Gz[k];
if ((pzero == taskid) && (k == zero))
tmp[k] = 0.0;
else
tmp[k] = fourpi / gg;
tmp[k] = fourpi/gg;
}
mycneb->t_pack(0, tmp);
mycneb->tt_pack_copy(0, tmp, vg);
std::cout << "vg=" << vg[0] << " "
<< vg[1] << " "
<< vg[2] << " "
<< vg[3] << " "
<< vg[4] << " "
<< vg[5] << " "
<< vg[6] << " "
<< vg[7] << " "
<< vg[8] << " "
<< vg[9] << std::endl;

delete[] tmp;
}
Expand Down Expand Up @@ -100,11 +110,14 @@ double cCoulomb_Operator::ecoulomb(const double *dng)
double ave = 0.0;

int k1 = 0;
std::cout << "ecoul= ";
for (auto k=0; k<npack0; ++k)
{
ave += vg[k] * (dng[k1]*dng[k1] + dng[k1+1]*dng[k1+1]);
k1 += 2;
std::cout << vg[k] << " " << dng[k1] << " " << dng[k1+1] << " | ";
}
std::cout << std::endl;
ave = mycneb->c3db::parall->SumAll(1,ave);
ave *= 0.5*(mycneb->lattice->omega());

Expand Down
32 changes: 16 additions & 16 deletions Nwpw/band/lib/cElectron/cElectron.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@ cElectron_Operators::cElectron_Operators(Cneb *mygrid0, cKinetic_Operator *myke0
xcp = mygrid->r_nalloc(ispin);
xce = mygrid->r_nalloc(ispin);

x = mygrid->r_alloc();
rho = mygrid->r_alloc();
vall = mygrid->r_alloc();
x = mygrid->c_alloc();
rho = mygrid->c_alloc();
vall = mygrid->c_alloc();
vl = mygrid->c_pack_allocate(0);

vc = mygrid->c_pack_allocate(0);
Expand All @@ -55,8 +55,8 @@ cElectron_Operators::cElectron_Operators(Cneb *mygrid0, cKinetic_Operator *myke0
scal2 = 1.0/omega;
dv = omega*scal1;

n2ft3d = (mygrid->n2ft3d);
shift1 = 2 * (mygrid->npack(1));
nfft3d = (mygrid->nfft3d);
shift1 = 2*(mygrid->npack1_max());
npack1 = shift1;
shift2 = (mygrid->n2ft3d);
}
Expand Down Expand Up @@ -95,8 +95,8 @@ void cElectron_Operators::gen_densities(double *dn, double *dng, double *dnall)

/* generate rho and dng */
double *tmp = x;
mygrid->rrr_Sum(dn, dn+(ispin-1)*n2ft3d, rho);
mygrid->rr_SMul(scal1, rho, tmp);
mygrid->rrc_Sum(dn, dn+(ispin-1)*nfft3d, rho);
mygrid->cc_SMul(scal1, rho, tmp);
// mygrid->rc_fft3d(tmp);
mygrid->rc_pfft3f(0, tmp);
mygrid->c_pack(0, tmp);
Expand All @@ -106,12 +106,12 @@ void cElectron_Operators::gen_densities(double *dn, double *dng, double *dnall)
if (mypsp->has_semicore())
{
for (int ms = 0; ms < ispin; ++ms)
mygrid->rrr_SMulAdd(0.5, mypsp->semicore_density, dn+ms*n2ft3d, dnall+ms*n2ft3d);
mygrid->rrr_SMulAdd(0.5, mypsp->semicore_density, dn+ms*nfft3d, dnall+ms*nfft3d);
}
else
{
for (int ms = 0; ms < ispin; ++ms)
mygrid->rr_copy(dn+ms*n2ft3d, dnall+ms*n2ft3d);
mygrid->rr_copy(dn+ms*nfft3d, dnall+ms*nfft3d);
}
}

Expand Down Expand Up @@ -327,7 +327,7 @@ double cElectron_Operators::exc(double *dnall)
}
else
{
excsum += mygrid->rr_dot(&dnall[n2ft3d], xce);
excsum += mygrid->rr_dot(dnall+nfft3d, xce);
}
excsum *= dv;

Expand All @@ -349,7 +349,7 @@ double cElectron_Operators::pxc(double *dn)
}
else
{
pxcsum += mygrid->rr_dot(&dn[n2ft3d], &xcp[n2ft3d]);
pxcsum += mygrid->rr_dot(dn+nfft3d, xcp+nfft3d);
}
pxcsum *= dv;

Expand Down Expand Up @@ -391,8 +391,8 @@ double cElectron_Operators::energy(double *psi, double *dn, double *dng, double
}
else
{
exc0 += mygrid->rr_dot(&dnall[n2ft3d], xce);
pxc0 += mygrid->rr_dot(&dn[n2ft3d], &xcp[n2ft3d]);
exc0 += mygrid->rr_dot(dnall+nfft3d, xce);
pxc0 += mygrid->rr_dot(dn+nfft3d, xcp+nfft3d);
}
exc0 *= dv;
pxc0 *= dv;
Expand Down Expand Up @@ -429,8 +429,8 @@ void cElectron_Operators::gen_energies_en(double *psi, double *dn, double *dng,
}
else
{
exc0 += mygrid->rr_dot(&dnall[n2ft3d], xce);
pxc0 += mygrid->rr_dot(&dn[n2ft3d], &xcp[n2ft3d]);
exc0 += mygrid->rr_dot(dnall+nfft3d, xce);
pxc0 += mygrid->rr_dot(dn+nfft3d, xcp+nfft3d);
}
exc0 *= dv;
pxc0 *= dv;
Expand All @@ -452,7 +452,7 @@ void cElectron_Operators::gen_energies_en(double *psi, double *dn, double *dng,

en[0] = dv * mygrid->r_dsum(dn);
en[1] = en[0];
if (ispin>1) en[1] = dv*mygrid->r_dsum(&dn[n2ft3d]);
if (ispin>1) en[1] = dv*mygrid->r_dsum(dn+nfft3d);
}

/********************************************
Expand Down
Loading

0 comments on commit d1a8ece

Please sign in to comment.