int main(int argc, char* argv[]) { parseArgs(argc, argv); int NumTask, rank; MPI_Init( &argc, &argv ); MPI_Comm_size( MPI_COMM_WORLD, &NumTask); MPI_Comm_rank( MPI_COMM_WORLD, &rank); SearchStrategy* ss = SearchStrategy::create(strategyNo); if (verbose) printf("Using strategy '%s' ...\n", ss->name()); ss->setMaxDepth(maxDepth); b.setSearchStrategy( ss ); ss->setEvaluator(&ev); if( verbose ) printf("\nIn main, rank = %d\n", rank); ss->registerCallbacks(new SearchCallbacks(verbose, NumTask, rank)); // Only rank 0 opens port & communicates if( rank == 0 ) { printf("\nStarting, rank = %d\n", rank); MyDomain d(lport); l.install(&d); if (host) d.addConnection(host, rport); //l.install(&d); l.run(); } else // others wait for signal from Master - rank 0 { printf("\nRank %d executing wait\n", rank); ss->setBoard( &b ); ss->wait(); } MPI_Finalize(); printf("\n Rank %d exiting from Main \n", rank ); }