Hello Gilles That idea crossed my mind as well, but I was under the impression that MPI_THREAD_MULTIPLE is not very well supported on OpenMPI? I believe it is not supported on OpenIB, but the original poster seems to be using TCP. Does it work for TCP?
Thanks Durga 1% of the executables have 99% of CPU privilege! Userspace code! Unite!! Occupy the kernel!!! On Sun, Apr 24, 2016 at 10:48 AM, Gilles Gouaillardet < gilles.gouaillar...@gmail.com> wrote: > an other option is to use MPI_THREAD_MULTIPLE, and MPI_Recv() on the > master task in a dedicated thread, and use a unique tag (or MPI_Comm_dup() > MPI_COMM_WORLD) to separate the traffic. > > If this is not the desired design, then the master task has to post > MPI_Irecv() and "poll" with MPI_Probe() / MPI_Test() and friends. > Note it is possible to use non blocking collective (MPI_Ibcast(), > MPI_Iscatter() and MPI_Igather()) and "both" collective and the progress > statuses > > Cheers, > > Gilles > > On Sunday, April 24, 2016, dpchoudh . <dpcho...@gmail.com> wrote: > >> Hello >> >> >> I am not sure I am understanding your requirements correctly, but base on >> what I think it is, how about this: you do an MPI_Send() from all the >> non-root nodes to the root node and pack all the progress related data into >> this send. Use a special tag for this message to make it stand out from >> 'regular' sends. The root node does a non-blocking receive on this tag from >> all the nodes that it is expecting this message from. >> >> Would that work? >> >> Durga >> >> >> 1% of the executables have 99% of CPU privilege! >> Userspace code! Unite!! Occupy the kernel!!! >> >> On Sun, Apr 24, 2016 at 7:05 AM, MM <finjulh...@gmail.com> wrote: >> >>> Hello, >>> >>> With a miniature case of 3 linux quadcore boxes, linked via 1Gbit >>> Ethernet, I have a UI that runs on 1 of the 3 boxes, and that is the root >>> of the communicator. >>> I have a 1-second-running function on up to 10 parameters, my parameter >>> space fits in the memory of the root, the space of it is N ~~ 1 million. >>> >>> I use broadcast/scatter/gather to collect the value of my function on >>> each of the 1million points, dividing 1million by the number of nodes (11: >>> rootnode has 1 core/thread assigned to the UI, 1 core/thread for its >>> evaluation of the function on its own part of the parameter space and 2 >>> other cores run non-root nodes, and the 2 other boxes all run non-root >>> nodes) >>> >>> the rootnode does: >>> 1. broadcast needed data >>> 2. scatter param space >>> 3. evaluate function locally >>> 4. gather results from this and all other nodes >>> >>> How would I go about having the non-root nodes send a sort of progress >>> status to the root node? that's used for plotting results on the root box >>> as soon as they are available? >>> >>> Rds, >>> >>> >>> >>> >>> >>> _______________________________________________ >>> users mailing list >>> us...@open-mpi.org >>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users >>> Link to this post: >>> http://www.open-mpi.org/community/lists/users/2016/04/29013.php >>> >> >> > _______________________________________________ > users mailing list > us...@open-mpi.org > Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users > Link to this post: > http://www.open-mpi.org/community/lists/users/2016/04/29015.php >