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; }
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; }