MachineBGQTest(const Teuchos::Comm<int> &comm ): Machine<pcoord_t,part_t>(comm), networkDim(6), procCoords(NULL),machine_extent(NULL), delete_transformed_coords(false), transformed_network_dim(0),transformed_coordinates (NULL), pl(NULL){ transformed_network_dim = networkDim - 1; transformed_coordinates = procCoords; machine_extent = new int[networkDim]; this->getMachineExtent(this->machine_extent); machine_extent[5] = 1; //allocate memory for processor coordinates. procCoords = new pcoord_t *[networkDim]; for (int i = 0; i < networkDim; ++i){ procCoords[i] = new pcoord_t[this->numRanks]; memset(procCoords[i], 0, sizeof(pcoord_t) * this->numRanks); } //obtain the coordinate of the processor. pcoord_t *xyz = new pcoord_t[networkDim]; getMyActualMachineCoordinate(xyz); for (int i = 0; i < networkDim; i++) procCoords[i][this->myRank] = xyz[i]; delete [] xyz; //reduceAll the coordinates of each processor. gatherMachineCoordinates(comm); }
MachineBGQTest(const Teuchos::Comm<int> &comm, const Teuchos::ParameterList &pl_): Machine<pcoord_t,part_t>(comm), networkDim(6), procCoords(NULL),machine_extent(NULL), delete_transformed_coords(false), transformed_network_dim(0),transformed_coordinates (NULL), pl(&pl_) { transformed_network_dim = networkDim - 1; transformed_coordinates = procCoords; machine_extent = new int[networkDim]; this->getMachineExtent(this->machine_extent); machine_extent[5] = 1; //allocate memory for processor coordinates. procCoords = new pcoord_t *[networkDim]; for (int i = 0; i < networkDim; ++i){ procCoords[i] = new pcoord_t[this->numRanks]; memset(procCoords[i], 0, sizeof(pcoord_t) * this->numRanks); } //obtain the coordinate of the processor. pcoord_t *xyz = new pcoord_t[networkDim]; getMyActualMachineCoordinate(xyz); for (int i = 0; i < networkDim; i++) procCoords[i][this->myRank] = xyz[i]; delete [] xyz; //reduceAll the coordinates of each processor. gatherMachineCoordinates(comm); const Teuchos::ParameterEntry *pe = this->pl->getEntryPtr("machine_coord_transformation"); if (pe){ std::string approach; approach = pe->getValue<std::string>(&approach); if (approach == "Node"){ transformed_network_dim = networkDim - 1; transformed_coordinates = procCoords; } else if (approach == "EIGNORE"){ //if (this->myRank == 0) std::cout << "Ignoring E Dimension" << std::endl; transformed_network_dim = networkDim - 2; transformed_coordinates = procCoords; } } }
MachineForTesting(const Teuchos::Comm<int> &comm): Machine<pcoord_t,part_t>(comm), networkDim(3), procCoords(NULL) { //allocate memory for processor coordinates. procCoords = new pcoord_t *[networkDim]; for (int i = 0; i < networkDim; ++i){ procCoords[i] = new pcoord_t[this->numRanks]; memset(procCoords[i], 0, sizeof(pcoord_t) * this->numRanks); } //obtain the coordinate of the processor. pcoord_t *xyz = new pcoord_t[networkDim]; getMyMachineCoordinate(xyz); for (int i = 0; i < networkDim; i++) procCoords[i][this->myRank] = xyz[i]; delete [] xyz; //reduceAll the coordinates of each processor. gatherMachineCoordinates(comm); }