Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] mpi_group_incl erros
From: Jeff Squyres (jsquyres_at_[hidden])
Date: 2012-08-16 13:41:47


Further, if Neven is greater than 3, then you've got uninitialized values in the members array. That could be causing Open MPI to say "there's a bad rank number in there!", for example, if members[3] is randomly initialized to 1234.

On Aug 16, 2012, at 10:01 AM, Ralph Castain wrote:

> Well, one thing immediately leaps to the eye. You compute Neven based on the number of procs in the job, which you set when executing mpirun. However, the number of members you put in your group is fixed. Then you pass Neven to the MPI_Group call as the parameter telling it how many entries are in your member array!
>
> On Aug 16, 2012, at 5:07 AM, maryam moein <maryam_moein2005_at_[hidden]> wrote:
>
>> I'm new memeber in this weblog, and I should deliver my assignment as soon as possible, but I have a big problem that I can't solve it. Please help me. In MPI I should divide my group into two groups. But all the time when I want to run a program I got error about mpi_group_incl. This is my error:
>>
>> [ubuntu:3346] *** An error occurred in MPI_Group_incl
>> [ubuntu:3346] *** on communicator MPI_COMM_WORLD
>> [ubuntu:3346] *** MPI_ERR_RANK: invalid rank
>> [ubuntu:3346] *** MPI_ERRORS_ARE_FATAL (your MPI job will now abort)
>> --------------------------------------------------------------------------
>> mpiexec has exited due to process rank 0 with PID 3345 on
>> node ubuntu exiting without calling "finalize". This may
>> have caused other processes in the application to be
>> terminated by signals sent by mpiexec (as reported here).
>>
>>
>> I should mention that I run this program with diffrent number of process but I got same errors. In below you can find my c program.
>>
>> #include <stdio.h>
>> #include "mpi.h"
>> #include <unistd.h>
>> #include <time.h>
>> #include <stdlib.h>
>> #include <string.h>
>> void main(int argc, char *argv[])
>> {
>> int Iam, p;
>> int Neven, Nodd, members[6], even_rank, odd_rank;
>> MPI_Group group_world, even_group, odd_group;
>> /* Starts MPI processes ... */
>> MPI_Init(&argc, &argv); /* starts MPI */
>> MPI_Comm_rank(MPI_COMM_WORLD, &Iam); /* get current process id */
>> MPI_Comm_size(MPI_COMM_WORLD, &p); /* get number of processes */
>> Neven = (p + 1)/2; /* All processes of MPI_COMM_WORLD are divided */
>> Nodd = p - Neven; /* into 2 groups, odd- and even-numbered groups */
>> members[0] = 2;
>> members[1] = 0;
>> members[2] = 4;
>> MPI_Comm_group(MPI_COMM_WORLD, &group_world);
>> MPI_Group_incl(group_world, Neven, members, &even_group);
>> MPI_Group_excl(group_world, Neven, members, &odd_group);
>>
>> MPI_Barrier(MPI_COMM_WORLD);
>> if(Iam == 0) {
>> printf("MPI_Group_incl/excl Usage Example\n");
>> printf("\n");
>> printf("Number of processes is %d\n", p);
>> printf("Number of odd processes is %d\n", Nodd);
>> printf("Number of even processes is %d\n", Neven);
>> printf("\n");
>> printf(" Iam even odd\n");
>> }
>> MPI_Barrier(MPI_COMM_WORLD);
>>
>> MPI_Group_rank(even_group, &even_rank);
>> MPI_Group_rank( odd_group, &odd_rank);
>> printf("%d %d %d\n",Iam, even_rank, odd_rank);
>>
>> MPI_Finalize(); /* let MPI finish up ... */
>> }
>>
>> _______________________________________________
>> users mailing list
>> users_at_[hidden]
>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users

-- 
Jeff Squyres
jsquyres_at_[hidden]
For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/