int main(int argc, char **argv) {
  if (argc == 1) {
    execlp("mpirun", "mpirun", "-n", std::to_string(WORKERS_NUM + 1).data(), argv[0], "1", NULL);
  }

  auto dataChannel = std::make_shared<thd::DataChannelMPI>();
  assert(dataChannel->init());
  assert(dataChannel->getNumProcesses() == (WORKERS_NUM + 1));
  std::cout << "OK (id: " << dataChannel->getRank() << ")" << std::endl;
  return 0;
}
Exemple #2
0
bool Communicator::syncState(bool my_state) {
  bool result = my_state;
  if (getRank() == 0) {
    for (int i = 1; i < getNumProcesses(); ++i) {
      result &= recvState(i);
    }
  } else if (my_state) {
    sendValid(0);
  } else {
    sendInvalid(0);
  }
  bcast(result, 0);
  return result;
}