Skip to content
Snippets Groups Projects
Commit b082a6b9 authored by John Romein's avatar John Romein
Browse files

bug 225:

Other way of determining PSet dimensions.
parent 9d453cfc
No related branches found
No related tags found
No related merge requests found
......@@ -102,13 +102,7 @@ int main(int argc, char **argv)
#if defined HAVE_ZOID && defined HAVE_BGL
ionStream = new ZoidClientStream;
#elif 1 && defined HAVE_FCNP && defined HAVE_BGP
std::vector<unsigned> psetDimensions(3);
psetDimensions[0] = 4;
psetDimensions[1] = 2;
psetDimensions[2] = 2;
FCNP_CN::init(psetDimensions);
FCNP_CN::init();
ionStream = new FCNP_ClientStream;
#elif 0
ionStream = new NullStream;
......
......@@ -402,21 +402,37 @@ static void initHeaders()
}
static void getConfiguration(const std::vector<unsigned> &psetDimensions)
static void getConfiguration()
{
unsigned xPos = personality.Network_Config.Xcoord;
unsigned yPos = personality.Network_Config.Ycoord;
unsigned zPos = personality.Network_Config.Zcoord;
assert(psetDimensions.size() == 3);
unsigned xPsetSize, yPsetSize, zPsetSize;
unsigned psetSize = personality.Network_Config.PSetSize;
unsigned xPsetSize = psetDimensions[0];
unsigned yPsetSize = psetDimensions[1];
unsigned zPsetSize = psetDimensions[2];
switch (psetSize) {
case 16 : xPsetSize = 4, yPsetSize = 2, zPsetSize = 2;
break;
case 32 : xPsetSize = 4, yPsetSize = 4, zPsetSize = 2;
break;
case 64 : xPsetSize = 4, yPsetSize = 4, zPsetSize = 4;
break;
case 128 : xPsetSize = 4, yPsetSize = 4, zPsetSize = 8;
break;
assert(xPsetSize * yPsetSize * zPsetSize == psetSize);
case 256 : xPsetSize = 8, yPsetSize = 4, zPsetSize = 8;
break;
case 512 : xPsetSize = 8, yPsetSize = 8, zPsetSize = 8;
break;
default : std::cerr << "FCNP: cannot determine PSet dimensions" << std::endl;
exit(1);
}
unsigned xPsetPos = xPos % xPsetSize;
unsigned yPsetPos = yPos % yPsetSize;
......@@ -487,11 +503,11 @@ static void drainFIFO()
}
void init(const std::vector<unsigned> &psetDimensions)
void init()
{
getPersonality();
openShm();
getConfiguration(psetDimensions);
getConfiguration();
initHeaders();
allocateMutexes();
drainFIFO();
......
......@@ -7,8 +7,7 @@
namespace FCNP_CN
{
// /proc/personality.sh gives wrong BG_PSETSIZE; provide dimensions manually
void init(const std::vector<unsigned> &psetDimensions);
void init();
// ptr and size must be a multiple of 16!
void CNtoION_ZeroCopy(const void *ptr, size_t size);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment