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_moein2...@yahoo.com> 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
>> us...@open-mpi.org
>> http://www.open-mpi.org/mailman/listinfo.cgi/users
> 
> _______________________________________________
> users mailing list
> us...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users


-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to: 
http://www.cisco.com/web/about/doing_business/legal/cri/


Reply via email to