mirror of
https://github.com/paboyle/Grid.git
synced 2025-04-09 21:50:45 +01:00
bug fix. works now and great face performance
This commit is contained in:
parent
fd1eb7de13
commit
f8797e1e3e
@ -87,7 +87,8 @@
|
|||||||
#define ASM_LEG_XP(Dir,NxtDir,PERMUTE_DIR,PROJ,RECON) \
|
#define ASM_LEG_XP(Dir,NxtDir,PERMUTE_DIR,PROJ,RECON) \
|
||||||
base = st.GetInfo(ptype,local,perm,Dir,ent,plocal); ent++; \
|
base = st.GetInfo(ptype,local,perm,Dir,ent,plocal); ent++; \
|
||||||
PF_GAUGE(Xp); \
|
PF_GAUGE(Xp); \
|
||||||
PREFETCH1_CHIMU(base);{ ZERO_PSI; } \
|
PREFETCH1_CHIMU(base); \
|
||||||
|
{ ZERO_PSI; } \
|
||||||
ASM_LEG(Dir,NxtDir,PERMUTE_DIR,PROJ,RECON)
|
ASM_LEG(Dir,NxtDir,PERMUTE_DIR,PROJ,RECON)
|
||||||
|
|
||||||
#define RESULT(base,basep) SAVE_RESULT(base,basep);
|
#define RESULT(base,basep) SAVE_RESULT(base,basep);
|
||||||
@ -111,6 +112,7 @@
|
|||||||
|
|
||||||
#define ASM_LEG_XP(Dir,NxtDir,PERMUTE_DIR,PROJ,RECON) \
|
#define ASM_LEG_XP(Dir,NxtDir,PERMUTE_DIR,PROJ,RECON) \
|
||||||
nmu=0; \
|
nmu=0; \
|
||||||
|
{ ZERO_PSI;} \
|
||||||
base = st.GetInfo(ptype,local,perm,Dir,ent,plocal); ent++; \
|
base = st.GetInfo(ptype,local,perm,Dir,ent,plocal); ent++; \
|
||||||
if((!local)&&(!st.same_node[Dir]) ) { \
|
if((!local)&&(!st.same_node[Dir]) ) { \
|
||||||
LOAD_CHI(base); \
|
LOAD_CHI(base); \
|
||||||
@ -118,7 +120,7 @@
|
|||||||
LOAD64(%r10,isigns); \
|
LOAD64(%r10,isigns); \
|
||||||
RECON; \
|
RECON; \
|
||||||
nmu++; \
|
nmu++; \
|
||||||
} else { ZERO_PSI; };
|
}
|
||||||
|
|
||||||
#define RESULT(base,basep) if (nmu){ ADD_RESULT(base,base);}
|
#define RESULT(base,basep) if (nmu){ ADD_RESULT(base,base);}
|
||||||
|
|
||||||
@ -134,11 +136,15 @@
|
|||||||
MASK_REGS;
|
MASK_REGS;
|
||||||
int nmax=U._grid->oSites();
|
int nmax=U._grid->oSites();
|
||||||
for(int site=0;site<Ns;site++) {
|
for(int site=0;site<Ns;site++) {
|
||||||
|
#ifndef EXTERIOR
|
||||||
int sU =lo.Reorder(ssU);
|
int sU =lo.Reorder(ssU);
|
||||||
int ssn=ssU+1; if(ssn>=nmax) ssn=0;
|
int ssn=ssU+1; if(ssn>=nmax) ssn=0;
|
||||||
int sUn=lo.Reorder(ssn);
|
int sUn=lo.Reorder(ssn);
|
||||||
#ifndef EXTERIOR
|
|
||||||
LOCK_GAUGE(0);
|
LOCK_GAUGE(0);
|
||||||
|
#else
|
||||||
|
int sU =ssU;
|
||||||
|
int ssn=ssU+1; if(ssn>=nmax) ssn=0;
|
||||||
|
int sUn=ssn;
|
||||||
#endif
|
#endif
|
||||||
for(int s=0;s<Ls;s++) {
|
for(int s=0;s<Ls;s++) {
|
||||||
ss =sU*Ls+s;
|
ss =sU*Ls+s;
|
||||||
@ -156,8 +162,9 @@
|
|||||||
ASM_LEG(Zm,Tm,PERMUTE_DIR1,DIR6_PROJMEM,DIR6_RECON);
|
ASM_LEG(Zm,Tm,PERMUTE_DIR1,DIR6_PROJMEM,DIR6_RECON);
|
||||||
ASM_LEG(Tm,Xp,PERMUTE_DIR0,DIR7_PROJMEM,DIR7_RECON);
|
ASM_LEG(Tm,Xp,PERMUTE_DIR0,DIR7_PROJMEM,DIR7_RECON);
|
||||||
|
|
||||||
#ifndef EXTERIOR
|
#ifdef EXTERIOR
|
||||||
if (nmu==0) break; //Early out if no work
|
if (nmu==0) break;
|
||||||
|
// if (nmu!=0) std::cout << "EXT "<<sU<<std::endl;
|
||||||
#endif
|
#endif
|
||||||
base = (uint64_t) &out._odata[ss];
|
base = (uint64_t) &out._odata[ss];
|
||||||
basep= st.GetPFInfo(nent,plocal); nent++;
|
basep= st.GetPFInfo(nent,plocal); nent++;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user