i.e rewrite
void printMpiNodesMachineNames in mpi.cpp like this:
void printMpiNodesMachineNames(MpiNode &node, int nthreads)
{
char nodename[64] = "undefined";
gethostname(nodename,sizeof(nodename));
if (node.isMaster())
{
std::cout << " === RELION MPI setup ===" << std::endl;
std::cout << " + Number of MPI processes = " << node.size << std::endl;
if (nthreads > 1)
{
std::cout << " + Number of threads per MPI process = " << nthreads << std::endl;
std::cout << " + Total number of threads therefore = " << nthreads * node.size << std::endl;
}
std::cout << " + Master (0) runs on host = " << nodename << std::endl;
std::cout.flush();
}
node.barrierWait();
for (int slave = 1; slave < node.size; slave++)
{
if (slave == node.rank)
{
std::cout << " + Slave ";
std::cout.width(5);
std::cout << slave;
std::cout << " runs on host = " << nodename << std::endl;
std::cout.flush();
}
node.barrierWait();
}
if (node.isMaster())
{
std::cout << " =================" << std::endl;
}
std::cout.flush();
// Try to flush all std::cout of all MPI processes before proceeding...
sleep(1);
node.barrierWait();
}
--
Tom Houweling - QB3 Nogales Lab Computer Analyst @ Howard Hughes Medical Institute
University of California Berkeley, 708D Stanley Hall, Berkeley, CA 94720