1
0
mirror of https://github.com/paboyle/Grid.git synced 2024-11-09 23:45:36 +00:00

Profiling temporary code until optimised

This commit is contained in:
Peter Boyle 2023-06-15 06:54:10 -04:00
parent a450e96827
commit 09146cfc43

View File

@ -131,6 +131,7 @@ public:
AdjMatrixField X(grid); AdjMatrixField X(grid);
Complex ci(0,1); Complex ci(0,1);
RealD t0 = usecond();
Ident = ComplexD(1.0); Ident = ComplexD(1.0);
for(int d=0;d<Nd;d++){ for(int d=0;d<Nd;d++){
Umu[d] = peekLorentz(U, d); Umu[d] = peekLorentz(U, d);
@ -161,6 +162,8 @@ public:
// Assemble the N matrix // Assemble the N matrix
////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////
// Computes ALL the staples -- could compute one only and do it here // Computes ALL the staples -- could compute one only and do it here
RealD time;
time=-usecond();
this->StoutSmearing->BaseSmear(C, U); this->StoutSmearing->BaseSmear(C, U);
Cmu = peekLorentz(C, mu); Cmu = peekLorentz(C, mu);
@ -169,7 +172,10 @@ public:
////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////
// Ta so Z lives in Lie algabra // Ta so Z lives in Lie algabra
Zx = Ta(Cmu * adj(Umu[mu])); Zx = Ta(Cmu * adj(Umu[mu]));
time+=usecond();
std::cout << GridLogMessage << "Z took "<<time<< " us"<<std::endl;
time=-usecond();
// Move Z to the Adjoint Rep == make_adjoint_representation // Move Z to the Adjoint Rep == make_adjoint_representation
ZxAd = Zero(); ZxAd = Zero();
for(int b=0;b<8;b++) { for(int b=0;b<8;b++) {
@ -180,10 +186,13 @@ public:
cplx = 2.0*trace(ci*tb*Zx); // my convention 1/2 delta ba cplx = 2.0*trace(ci*tb*Zx); // my convention 1/2 delta ba
ZxAd = ZxAd + cplx * TRb; // is this right? YES - Guido used Anti herm Ta's and with bloody wrong sign. ZxAd = ZxAd + cplx * TRb; // is this right? YES - Guido used Anti herm Ta's and with bloody wrong sign.
} }
time+=usecond();
std::cout << GridLogMessage << "ZxAd took "<<time<< " us"<<std::endl;
////////////////////////////////////// //////////////////////////////////////
// J(x) = 1 + Sum_k=1..N (-Zac)^k/(k+1)! // J(x) = 1 + Sum_k=1..N (-Zac)^k/(k+1)!
////////////////////////////////////// //////////////////////////////////////
time=-usecond();
X=1.0; X=1.0;
JxAd = X; JxAd = X;
mZxAd = (-1.0)*ZxAd; mZxAd = (-1.0)*ZxAd;
@ -193,10 +202,13 @@ public:
kpfac = kpfac /(k+1); kpfac = kpfac /(k+1);
JxAd = JxAd + X * kpfac; JxAd = JxAd + X * kpfac;
} }
time+=usecond();
std::cout << GridLogMessage << "Jx took "<<time<< " us"<<std::endl;
////////////////////////////////////// //////////////////////////////////////
// dJ(x)/dxe // dJ(x)/dxe
////////////////////////////////////// //////////////////////////////////////
time=-usecond();
std::vector<AdjMatrixField> dJdX; dJdX.resize(8,grid); std::vector<AdjMatrixField> dJdX; dJdX.resize(8,grid);
AdjMatrixField tbXn(grid); AdjMatrixField tbXn(grid);
AdjMatrixField sumXtbX(grid); AdjMatrixField sumXtbX(grid);
@ -220,12 +232,17 @@ public:
} }
dJdX[b] = -dt2; dJdX[b] = -dt2;
} }
time+=usecond();
std::cout << GridLogMessage << "dJx took "<<time<< " us"<<std::endl;
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
// Mask Umu for this link // Mask Umu for this link
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
time=-usecond();
PlaqL = Ident; PlaqL = Ident;
PlaqR = Utmp*adj(Cmu); PlaqR = Utmp*adj(Cmu);
ComputeNxy(PlaqL,PlaqR,NxxAd); ComputeNxy(PlaqL,PlaqR,NxxAd);
time+=usecond();
std::cout << GridLogMessage << "ComputeNxy took "<<time<< " us"<<std::endl;
//////////////////////////// ////////////////////////////
// Mab // Mab
@ -236,8 +253,12 @@ public:
///////////////////////// /////////////////////////
// invert the 8x8 // invert the 8x8
///////////////////////// /////////////////////////
time=-usecond();
MpAdInv = Inverse(MpAd); MpAdInv = Inverse(MpAd);
time+=usecond();
std::cout << GridLogMessage << "MpAdInv took "<<time<< " us"<<std::endl;
RealD t3a = usecond();
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
// Nxx Mp^-1 // Nxx Mp^-1
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
@ -283,6 +304,7 @@ public:
GaugeField Fdet2(grid); GaugeField Fdet2(grid);
GaugeLinkField Fdet_pol(grid); // one polarisation GaugeLinkField Fdet_pol(grid); // one polarisation
RealD t4 = usecond();
for(int nu=0;nu<Nd;nu++){ for(int nu=0;nu<Nd;nu++){
if (nu!=mu) { if (nu!=mu) {
@ -291,20 +313,29 @@ public:
// | | // | |
// x== // nu polarisation -- clockwise // x== // nu polarisation -- clockwise
time=-usecond();
PlaqL=Ident; PlaqL=Ident;
PlaqR=(-rho)*Gimpl::CovShiftForward(Umu[nu], nu, PlaqR=(-rho)*Gimpl::CovShiftForward(Umu[nu], nu,
Gimpl::CovShiftForward(Umu[mu], mu, Gimpl::CovShiftForward(Umu[mu], mu,
Gimpl::CovShiftBackward(Umu[nu], nu, Gimpl::CovShiftBackward(Umu[nu], nu,
Gimpl::CovShiftIdentityBackward(Utmp, mu)))); Gimpl::CovShiftIdentityBackward(Utmp, mu))));
time+=usecond();
std::cout << GridLogMessage << "PlaqLR took "<<time<< " us"<<std::endl;
time=-usecond();
dJdXe_nMpInv_y = dJdXe_nMpInv; dJdXe_nMpInv_y = dJdXe_nMpInv;
ComputeNxy(PlaqL,PlaqR,Nxy); ComputeNxy(PlaqL,PlaqR,Nxy);
Fdet1_nu = transpose(Nxy)*dJdXe_nMpInv_y; Fdet1_nu = transpose(Nxy)*dJdXe_nMpInv_y;
time+=usecond();
std::cout << GridLogMessage << "ComputeNxy (occurs 6x) took "<<time<< " us"<<std::endl;
time=-usecond();
PlaqR=(-1.0)*PlaqR; PlaqR=(-1.0)*PlaqR;
Compute_MpInvJx_dNxxdSy(PlaqL,PlaqR,MpInvJx,FdetV); Compute_MpInvJx_dNxxdSy(PlaqL,PlaqR,MpInvJx,FdetV);
Fdet2_nu = FdetV; Fdet2_nu = FdetV;
time+=usecond();
std::cout << GridLogMessage << "Compute_MpInvJx_dNxxSy (occurs 6x) took "<<time<< " us"<<std::endl;
// x== // x==
// | | // | |
@ -416,6 +447,7 @@ public:
} }
} }
RealD t5 = usecond();
Fdet1_mu = Fdet1_mu + transpose(NxxAd)*dJdXe_nMpInv; Fdet1_mu = Fdet1_mu + transpose(NxxAd)*dJdXe_nMpInv;
@ -423,6 +455,13 @@ public:
InsertForce(Fdet2,Fdet2_mu,mu); InsertForce(Fdet2,Fdet2_mu,mu);
force= (-0.5)*( Fdet1 + Fdet2); force= (-0.5)*( Fdet1 + Fdet2);
RealD t1 = usecond();
std::cout << GridLogMessage << " logDetJacobianForce level took "<<t1-t0<<" us "<<std::endl;
std::cout << GridLogMessage << " logDetJacobianForce t3-t0 "<<t3a-t0<<" us "<<std::endl;
std::cout << GridLogMessage << " logDetJacobianForce t4-t3 dJdXe_nMpInv "<<t4-t3a<<" us "<<std::endl;
std::cout << GridLogMessage << " logDetJacobianForce t5-t4 mu nu loop "<<t5-t4<<" us "<<std::endl;
std::cout << GridLogMessage << " logDetJacobianForce t1-t5 "<<t1-t5<<" us "<<std::endl;
std::cout << GridLogMessage << " logDetJacobianForce level took "<<t1-t0<<" us "<<std::endl;
} }
RealD logDetJacobianLevel(const GaugeField &U,int smr) RealD logDetJacobianLevel(const GaugeField &U,int smr)
{ {