#include "mpi.h" #include using namespace std; #define TAG_TEST 500 int main(int argc, char** argv) { int commSize, commRank, result; result = MPI_Init(&argc, &argv); if (result != MPI_SUCCESS) { cerr << "Error initializing MPI application!" << endl; MPI_Abort(MPI_COMM_WORLD, -1); } MPI_Comm_size(MPI_COMM_WORLD, &commSize); MPI_Comm_rank(MPI_COMM_WORLD, &commRank); int flag; MPI_Info ourInfo; MPI_Info_create(&ourInfo); MPI_Comm workerComm; MPI_Comm_spawn("/home/pthyseba/workspace/OCTOPUS/test-worker", MPI_ARGV_NULL, 1, ourInfo, 0, MPI_COMM_SELF, &workerComm, MPI_ERRCODES_IGNORE); for (int i = 0; ; i++) { MPI_Status s; MPI_Iprobe(0, TAG_TEST, workerComm, &flag, &s); if (flag > 0) { cout << "Master: message from worker detected after " << i << " probes" << endl; int data; MPI_Recv(&data, 1, MPI_INT, 0, TAG_TEST, workerComm, &s); break; } } MPI_Info_free(&ourInfo); MPI_Finalize(); return 0; }