I guess the second comm_rank call is invalid on all non-leader processes, as their LEADER_COMM communicator is MPI_COMM_NULL.
george On Fri, Jul 28, 2017 at 05:06 Diego Avesani <diego.aves...@gmail.com> wrote: > Dear George, Dear all, > > thanks, thanks a lot. I will tell you everything. > I will try also to implement your suggestion. > > Unfortunately, the program that I have show to you is not working. I get > the following error: > > [] *** An error occurred in MPI_Comm_rank > [] *** reported by process [643497985,7] > [] *** on communicator MPI_COMM_WORLD > [] *** MPI_ERR_COMM: invalid communicator > [] *** MPI_ERRORS_ARE_FATAL (processes in this communicator will now abort, > [] *** and potentially your MPI job) > [warn] Epoll ADD(4) on fd 47 failed. Old events were 0; read change was 0 > (none); write change was 1 (add): Bad file descriptor > [warn] Epoll ADD(4) on fd 65 failed. Old events were 0; read change was 0 > (none); write change was 1 (add): Bad file descriptor > [] 8 more processes have sent help message help-mpi-errors.txt / > mpi_errors_are_fatal > [] Set MCA parameter "orte_base_help_aggregate" to 0 to see all help / > error messages > > What do you think could be the error? > > Really, Really thanks again > > > > > > Diego > > > On 27 July 2017 at 15:57, George Bosilca <bosi...@icl.utk.edu> wrote: > >> This looks good. If performance is critical you can speed up the entire >> process by using MPI_Comm_create_group instead of the second >> MPI_COMM_SPLIT. The MPI_Comm_create_group is collective only over the >> resulting communicator and not over the source communicator, so its cost is >> only dependent of the number of groups and not on the total number of >> processes. >> >> You can also try to replace the first MPI_COMM_SPLIT by the same >> approach. I would be curious to see the outcome. >> >> George. >> >> >> On Thu, Jul 27, 2017 at 9:44 AM, Diego Avesani <diego.aves...@gmail.com> >> wrote: >> >>> Dear George, Dear all, >>> >>> I have tried to create a simple example. In particular, I would like to >>> use 16 CPUs and to create four groups according to rank is and then a >>> communicator between masters of each group.I have tried to follow the first >>> part of this example >>> <http://mpitutorial.com/tutorials/introduction-to-groups-and-communicators/>. >>> In the last part I have tried to create a communicator be masters as >>> suggested by George. >>> >>> Here my example: >>> >>> CALL MPI_INIT(ierror) >>> CALL MPI_COMM_SIZE(MPI_COMM_WORLD, nCPU, ierror) >>> CALL MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierror) >>> ! >>> colorloc = rank/4 >>> ! >>> CALL MPI_COMM_SPLIT(MPI_COMM_WORLD,colorloc,rank,*NEW_COMM*,ierror) >>> CALL MPI_COMM_RANK(*NEW_COMM*, subrank,ierror); >>> CALL MPI_COMM_SIZE(*NEW_COMM*, subnCPU,ierror); >>> ! >>> IF(MOD(rank,4).EQ.0)THEN >>> *! where I set color for the masters* >>> colorglobal = MOD(rank,4) >>> ELSE >>> colorglobal = MPI_UNDEFINED >>> ENDIF >>> ! >>> CALL MPI_COMM_SPLIT(MPI_COMM_WORLD,colorglobal,rank,LEADER_COMM,ierror) >>> CALL MPI_COMM_RANK(*LEADER_COMM*, leader_rank,ierror); >>> CALL MPI_FINALIZE(ierror) >>> >>> I would like to know if this could be correct. I mean if I have >>> understood correctly what George told me about the code design. Now, this >>> example does not work, but probably there is some coding error. >>> >>> Really, Really thanks >>> Diego >>> >>> >>> >>> >>> >>> >>> >>> Diego >>> >>> >>> On 27 July 2017 at 10:42, Diego Avesani <diego.aves...@gmail.com> wrote: >>> >>>> Dear George, Dear all, >>>> >>>> A question regarding program design: >>>> The draft that I have sent to you has to be done many and many times. >>>> Does the splitting procedure ensure efficiency? >>>> >>>> I will try, at a lest to create groups and split them. I am a beginner >>>> in the MPI groups environment. >>>> really, really thanks. >>>> >>>> You are my lifesaver. >>>> >>>> >>>> >>>> Diego >>>> >>>> >>>> On 26 July 2017 at 15:09, George Bosilca <bosi...@icl.utk.edu> wrote: >>>> >>>>> Diego, >>>>> >>>>> As all your processes are started under the umbrella of a single >>>>> mpirun, they have a communicator in common, the MPI_COMM_WORLD. >>>>> >>>>> One possible implementation, using MPI_Comm_split, will be the >>>>> following: >>>>> >>>>> MPI_Comm small_comm, leader_comm; >>>>> >>>>> /* Create small_comm on all processes */ >>>>> >>>>> /* Now use MPI_Comm_split on MPI_COMM_WORLD to select the leaders */ >>>>> MPI_Comm_split( MPI_COMM_WORLD, >>>>> i_am_leader(small_comm) ? 1 : >>>>> MPI_UNDEFINED, >>>>> rank_in_comm_world, >>>>> &leader_Comm); >>>>> >>>>> The leader_comm will be a valid communicator on all leaders processes, >>>>> and MPI_COMM_NULL on all others. >>>>> >>>>> George. >>>>> >>>>> >>>>> >>>>> On Wed, Jul 26, 2017 at 4:29 AM, Diego Avesani < >>>>> diego.aves...@gmail.com> wrote: >>>>> >>>>>> Dear George, Dear all, >>>>>> >>>>>> I use "mpirun -np xx ./a.out" >>>>>> >>>>>> I do not know if I have some common grounds. I mean, I have to >>>>>> design everything from the begging. You can find what I would like to do >>>>>> in >>>>>> the attachment. Basically, an MPI cast in another MPI. Consequently, I am >>>>>> thinking to MPI groups or MPI virtual topology with a 2D cart, using the >>>>>> columns as "groups" and the first rows as the external groups to handle >>>>>> the >>>>>> columns. >>>>>> >>>>>> What do think? What do you suggest? >>>>>> Really Really thanks >>>>>> >>>>>> >>>>>> Diego >>>>>> >>>>>> >>>>>> On 25 July 2017 at 19:26, George Bosilca <bosi...@icl.utk.edu> wrote: >>>>>> >>>>>>> Diego, >>>>>>> >>>>>>> Assuming you have some common grounds between the 4 initial groups >>>>>>> (otherwise you will have to connect them via >>>>>>> MPI_Comm_connect/MPI_Comm_accept) you can merge the 4 groups together >>>>>>> and >>>>>>> then use any MPI mechanism to create a partial group of leaders (such as >>>>>>> MPI_Comm_split). >>>>>>> >>>>>>> If you spawn the groups via MPI_Comm_spawn then the answer is >>>>>>> slightly more complicated, you need to use MPI_Intercomm_create, with >>>>>>> the >>>>>>> spawner as the bridge between the different communicators (and then >>>>>>> MPI_Intercomm_merge to create your intracomm). You can find a good >>>>>>> answer >>>>>>> on stackoverflow on this at >>>>>>> https://stackoverflow.com/questions/24806782/mpi-merge-multiple-intercoms-into-a-single-intracomm >>>>>>> >>>>>>> How is your MPI environment started (single mpirun or >>>>>>> mpi_comm_spawn) ? >>>>>>> >>>>>>> George. >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Tue, Jul 25, 2017 at 10:44 AM, Diego Avesani < >>>>>>> diego.aves...@gmail.com> wrote: >>>>>>> >>>>>>>> Dear All, >>>>>>>> >>>>>>>> I am studying Groups and Communicators, but before start going in >>>>>>>> detail, I have a question about groups. >>>>>>>> >>>>>>>> I would like to know if is it possible to create a group of masters >>>>>>>> of the other groups and then a intra-communication in the new group. I >>>>>>>> have >>>>>>>> spent sometime reading different tutorial and presentation, but it is >>>>>>>> difficult, at least for me, to understand if is it possible to create >>>>>>>> this >>>>>>>> sort of MPI cast in another MPI. >>>>>>>> >>>>>>>> In the attachment you can find a pictures that summarize what I >>>>>>>> would like to do. >>>>>>>> >>>>>>>> Another strategies could be use virtual topology. >>>>>>>> >>>>>>>> What do you think? >>>>>>>> >>>>>>>> I really, really, appreciate any kind of help, suggestions or link >>>>>>>> where I can study this topics. >>>>>>>> >>>>>>>> Again, thanks >>>>>>>> >>>>>>>> Best Regards, >>>>>>>> >>>>>>>> Diego >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> users mailing list >>>>>>>> users@lists.open-mpi.org >>>>>>>> https://rfd.newmexicoconsortium.org/mailman/listinfo/users >>>>>>>> >>>>>>> >>>>>>> >>>>>>> _______________________________________________ >>>>>>> users mailing list >>>>>>> users@lists.open-mpi.org >>>>>>> https://rfd.newmexicoconsortium.org/mailman/listinfo/users >>>>>>> >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> users mailing list >>>>>> users@lists.open-mpi.org >>>>>> https://rfd.newmexicoconsortium.org/mailman/listinfo/users >>>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> users mailing list >>>>> users@lists.open-mpi.org >>>>> https://rfd.newmexicoconsortium.org/mailman/listinfo/users >>>>> >>>> >>>> >>> >>> _______________________________________________ >>> users mailing list >>> users@lists.open-mpi.org >>> https://rfd.newmexicoconsortium.org/mailman/listinfo/users >>> >> >> >> _______________________________________________ >> users mailing list >> users@lists.open-mpi.org >> https://rfd.newmexicoconsortium.org/mailman/listinfo/users >> > > _______________________________________________ > users mailing list > users@lists.open-mpi.org > https://rfd.newmexicoconsortium.org/mailman/listinfo/users
_______________________________________________ users mailing list users@lists.open-mpi.org https://rfd.newmexicoconsortium.org/mailman/listinfo/users