mirror of
https://github.com/paboyle/Grid.git
synced 2024-11-09 23:45:36 +00:00
Better padded cell exchange
This commit is contained in:
parent
dd13937bb6
commit
78ab955fec
@ -126,10 +126,8 @@ template<class vobj> inline void ScatterSlice(const cshiftVector<vobj> &buf,
|
|||||||
///////////////////////////////////////////
|
///////////////////////////////////////////
|
||||||
// Transfer into lattice - will coalesce
|
// Transfer into lattice - will coalesce
|
||||||
///////////////////////////////////////////
|
///////////////////////////////////////////
|
||||||
#if 0
|
// sobj obj = extractLane(blane,buf_p[ss+offset]);
|
||||||
sobj obj = extractLane(blane,buf_p[ss+offset]);
|
// insertLane(lane,lat_v[osite],obj);
|
||||||
insertLane(lane,lat_v[osite],obj);
|
|
||||||
#else
|
|
||||||
const int words=sizeof(vobj)/sizeof(vector_type);
|
const int words=sizeof(vobj)/sizeof(vector_type);
|
||||||
vector_type * from = (vector_type *)&buf_p[ss+offset];
|
vector_type * from = (vector_type *)&buf_p[ss+offset];
|
||||||
vector_type * to = (vector_type *)&lat_v[osite];
|
vector_type * to = (vector_type *)&lat_v[osite];
|
||||||
@ -138,7 +136,6 @@ template<class vobj> inline void ScatterSlice(const cshiftVector<vobj> &buf,
|
|||||||
stmp = getlane(from[w], blane);
|
stmp = getlane(from[w], blane);
|
||||||
putlane(to[w], stmp, lane);
|
putlane(to[w], stmp, lane);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -215,10 +212,8 @@ template<class vobj> inline void GatherSlice(cshiftVector<vobj> &buf,
|
|||||||
///////////////////////////////////////////
|
///////////////////////////////////////////
|
||||||
// Take out of lattice
|
// Take out of lattice
|
||||||
///////////////////////////////////////////
|
///////////////////////////////////////////
|
||||||
#if 0
|
// sobj obj = extractLane(lane,lat_v[osite]);
|
||||||
sobj obj = extractLane(lane,lat_v[osite]);
|
// insertLane(blane,buf_p[ss+offset],obj);
|
||||||
insertLane(blane,buf_p[ss+offset],obj);
|
|
||||||
#else
|
|
||||||
const int words=sizeof(vobj)/sizeof(vector_type);
|
const int words=sizeof(vobj)/sizeof(vector_type);
|
||||||
vector_type * to = (vector_type *)&buf_p[ss+offset];
|
vector_type * to = (vector_type *)&buf_p[ss+offset];
|
||||||
vector_type * from = (vector_type *)&lat_v[osite];
|
vector_type * from = (vector_type *)&lat_v[osite];
|
||||||
@ -227,22 +222,8 @@ template<class vobj> inline void GatherSlice(cshiftVector<vobj> &buf,
|
|||||||
stmp = getlane(from[w], lane);
|
stmp = getlane(from[w], lane);
|
||||||
putlane(to[w], stmp, blane);
|
putlane(to[w], stmp, blane);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
/*
|
|
||||||
int words =block*nblock/simd[dim];
|
|
||||||
std::vector<vobj> tbuf(words);
|
|
||||||
acceleratorCopyFromDevice((void *)&buf[offset],(void *)&tbuf[0],words*sizeof(vobj));
|
|
||||||
typedef typename vobj::scalar_type scalar;
|
|
||||||
scalar *sbuf = (scalar *)&tbuf[0];
|
|
||||||
scalar tmp=0.0;
|
|
||||||
for(int w=0;w<words*sizeof(vobj)/sizeof(scalar);w++){
|
|
||||||
tmp=tmp+conjugate(sbuf[w])*sbuf[w];
|
|
||||||
}
|
|
||||||
std::cout << " Gathered buffer norm "<<tmp<<std::endl;
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user