#include int main(int argc, char **argv){ char myport[MPI_MAX_PORT_NAME]; MPI_Comm intercomm,intracomm; int i,j,s; MPI_Init(&argc,&argv); printf("%s: MPI_Open_port..\n",argv[0]); MPI_Open_port(MPI_INFO_NULL, myport); printf("%s: mpiport=%s\n",argv[0], myport); printf("%s: MPI_Comm_Accept..\n",argv[0]); MPI_Comm_accept(myport, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &intercomm); MPI_Comm_size(intercomm,&s); printf("%s: Size of intercommunicator: %i\n",argv[0],s); // printf("%s: MPI_Barrier..\n",argv[0]); // MPI_Barrier(intercomm); i=8; printf("%s: intercomm, MPI_Allreduce..\n",argv[0]); MPI_Allreduce(&i,&j,1,MPI_INT,MPI_SUM,intercomm); printf("%s: intercomm, my_value=%i SUM=%i\n",argv[0],i,j); MPI_Intercomm_merge(intercomm,0,&intracomm); printf("%s: intracomm, MPI_Allreduce..\n",argv[0]); MPI_Allreduce(&i,&j,1,MPI_INT,MPI_SUM,intracomm); printf("%s: intracomm, my_value=%i SUM=%i\n",argv[0],i,j); printf("Done\n"); printf("%s: Done\n",argv[0]); MPI_Finalize(); }