7 #include "PmeSolver.decl.h"
17 virtual int procNum(
int,
const CkArrayIndex& idx) {
22 if ( ! msg )
NAMD_bug(
"PmePencilXYZMap::populateInitial, multiple pencils on a pe?");
23 mgr->insertInitial(CkArrayIndex1D(0), msg);
27 if (msg != NULL) CkFreeMsg(msg);
35 PmePencilXMap(
int ia,
int ib,
int width,
const std::vector<int>& pes) : ia(ia), ib(ib), width(width), pes(pes) {}
39 virtual int procNum(
int,
const CkArrayIndex& idx) {
40 int ind = idx.data()[ia] + idx.data()[ib] * width;
41 if (ind < 0 || ind >= pes.size())
42 NAMD_bug(
"PmePencilXMap::procNum, index out of bounds");
46 for (
int i=0;i < pes.size();i++) {
47 if (pes[i] == CkMyPe()) {
48 if ( msg == NULL )
NAMD_bug(
"PmePencilXMap::populateInitial, multiple pencils on a pe?");
49 CkArrayIndex3D ai(0,0,0);
50 ai.data()[ib] = i / width;
51 ai.data()[ia] = i % width;
53 if (
procNum(0,ai) != CkMyPe() )
NAMD_bug(
"PmePencilXMap::populateInitial, map is inconsistent");
54 mgr->insertInitial(ai,msg);
59 if (msg != NULL) CkFreeMsg(msg);
67 const std::vector<int> pes;
76 virtual int procNum(
int,
const CkArrayIndex& idx) {
77 int ind = idx.data()[2];
78 if (ind < 0 || ind >= pes.size())
79 NAMD_bug(
"PmePencilXYMap::procNum, index out of bounds");
83 for (
int i=0;i < pes.size();i++) {
84 if (pes[i] == CkMyPe()) {
85 if ( msg == NULL )
NAMD_bug(
"PmePencilXYMap::populateInitial, multiple pencils on a pe?");
86 CkArrayIndex3D ai(0,0,0);
88 if (
procNum(0,ai) != CkMyPe() )
NAMD_bug(
"PmePencilXYMap::populateInitial, map is inconsistent");
89 mgr->insertInitial(ai, msg);
94 if (msg != NULL) CkFreeMsg(msg);
98 const std::vector<int> pes;
133 PmePencilXYZ_SDAG_CODE
159 PmePencilXY_SDAG_CODE
177 virtual void forwardDone();
178 virtual void backwardDone();
180 virtual void start(
const CkCallback &);
204 virtual void forwardDone();
205 virtual void backwardDone();
207 virtual void start(
const CkCallback &);
231 virtual void forwardDone();
232 virtual void backwardDone();
235 virtual void start(
const CkCallback &);
263 virtual void backwardDone();
265 virtual void start(
const CkCallback &);
275 #endif // PMESOLVER_H
PmePencilXYMap(const std::vector< int > &pes)
std::vector< int > blockSizes
int registerArray(CkArrayIndex &numElements, CkArrayID aid)
virtual int procNum(int, const CkArrayIndex &idx)
virtual void backwardDone()
PmeTranspose * pmeTranspose
int registerArray(CkArrayIndex &numElements, CkArrayID aid)
virtual void populateInitial(int, CkArrayOptions &, void *msg, CkArrMgr *mgr)
PmeKSpaceCompute * pmeKSpaceCompute
PmePencilX_SDAG_CODE PmePencilX()
std::vector< int > blockSizes
PmeTranspose * pmeTranspose
std::vector< int > blockSizes
PmeTranspose * pmeTranspose
PmePencilXMap(int ia, int ib, int width, const std::vector< int > &pes)
virtual int procNum(int, const CkArrayIndex &idx)
void NAMD_bug(const char *err_msg)
PmePencilXY_SDAG_CODE PmePencilXY()
PmeKSpaceCompute * pmeKSpaceCompute
virtual int procNum(int, const CkArrayIndex &idx)
std::vector< int > blockSizes
PmePencilXYZ_SDAG_CODE PmePencilXYZ()
PmePencilZ_SDAG_CODE PmePencilZ()
int registerArray(CkArrayIndex &numElements, CkArrayID aid)
virtual void populateInitial(int, CkArrayOptions &, void *msg, CkArrMgr *mgr)
PmeTranspose * pmeTranspose
virtual void populateInitial(int, CkArrayOptions &, void *msg, CkArrMgr *mgr)
PmePencilY_SDAG_CODE PmePencilY()