NAMD
Public Member Functions | List of all members
PmePencilXMap Class Reference

#include <PmeSolver.h>

Inheritance diagram for PmePencilXMap:

Public Member Functions

 PmePencilXMap (int ia, int ib, int width, const std::vector< int > &pes)
 
int registerArray (CkArrayIndex &numElements, CkArrayID aid)
 
virtual int procNum (int, const CkArrayIndex &idx)
 
virtual void populateInitial (int, CkArrayOptions &, void *msg, CkArrMgr *mgr)
 

Detailed Description

Definition at line 35 of file PmeSolver.h.

Constructor & Destructor Documentation

◆ PmePencilXMap()

PmePencilXMap::PmePencilXMap ( int  ia,
int  ib,
int  width,
const std::vector< int > &  pes 
)
inline

Definition at line 37 of file PmeSolver.h.

37 : ia(ia), ib(ib), width(width), pes(pes) {}

Member Function Documentation

◆ populateInitial()

virtual void PmePencilXMap::populateInitial ( int  ,
CkArrayOptions &  ,
void *  msg,
CkArrMgr *  mgr 
)
inlinevirtual

Definition at line 47 of file PmeSolver.h.

References NAMD_bug(), and procNum().

47  {
48  for (int i=0;i < pes.size();i++) {
49  if (pes[i] == CkMyPe()) {
50  if ( msg == NULL ) NAMD_bug("PmePencilXMap::populateInitial, multiple pencils on a pe?");
51  CkArrayIndex3D ai(0,0,0);
52  ai.data()[ib] = i / width;
53  ai.data()[ia] = i % width;
54  //fprintf(stderr, "Pe %d i %d at %d %d\n", pes[i], i, ai.data()[ia], ai.data()[ib]);
55  if ( procNum(0,ai) != CkMyPe() ) NAMD_bug("PmePencilXMap::populateInitial, map is inconsistent");
56  mgr->insertInitial(ai,msg);
57  msg = NULL;
58  }
59  }
60  mgr->doneInserting();
61  if (msg != NULL) CkFreeMsg(msg);
62  }
virtual int procNum(int, const CkArrayIndex &idx)
Definition: PmeSolver.h:41
void NAMD_bug(const char *err_msg)
Definition: common.C:195

◆ procNum()

virtual int PmePencilXMap::procNum ( int  ,
const CkArrayIndex &  idx 
)
inlinevirtual

Definition at line 41 of file PmeSolver.h.

References NAMD_bug().

Referenced by populateInitial().

41  {
42  int ind = idx.data()[ia] + idx.data()[ib] * width;
43  if (ind < 0 || ind >= pes.size())
44  NAMD_bug("PmePencilXMap::procNum, index out of bounds");
45  return pes[ind];
46  }
void NAMD_bug(const char *err_msg)
Definition: common.C:195

◆ registerArray()

int PmePencilXMap::registerArray ( CkArrayIndex &  numElements,
CkArrayID  aid 
)
inline

Definition at line 38 of file PmeSolver.h.

38  {
39  return 0;
40  }

The documentation for this class was generated from the following file: