I'm so sorry, Actually my problem is in another mpi program which is "sudoku game". But because of the fact I got inclusion error whenever I use MPI_Group_incl. For simplicity, I decided to put a simple program with MPI_Group_incl. Please take a look at the following lines of code, and please note that in this program I'm supposed to work just with 82 processes and I tried to divide the processes into 2 groups, namely "master" and "workers", master for "rank 0" process and workers for rest of processes(81 processes).

Here is the codes:

#include <string.h>
#include "mpi.h"
#include <stdio.h>
#include <unistd.h>
#include <time.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{

        //Initializing the MPI world, rank, and size
       int  size,rank,m,w,i;
       MPI_Group group,master,workers;
       MPI_Comm comm_world, comm_workers, comm_master;
       MPI_Status status;
        MPI_Request request;
        MPI_Init(&argc, &argv);
         MPI_Comm_size(MPI_COMM_WORLD, &size);
         MPI_Comm_rank(MPI_COMM_WORLD, &rank);
          if (size != 82 ){
                printf("Please run with 82 processors.\n");
                fflush(stdout);
                MPI_Finalize();
                exit(1);
            }
    comm_world = MPI_COMM_WORLD;
    MPI_Comm_group(comm_world, &group);
    MPI_Group_incl(group, 1, 0 , &master);
    MPI_Group_excl(group, 1, 0, &workers);
    MPI_Comm_create(comm_world, master, &comm_master);
    MPI_Comm_create(comm_world, workers, &comm_workers);
    MPI_Finalize();
}


From: Jeff Squyres <jsquyres@cisco.com>
To: Open MPI Users <users@open-mpi.org>
Cc: maryam moein <maryam_moein2005@yahoo.com>
Sent: Thursday, August 16, 2012 7:41 PM
Subject: Re: [OMPI users] mpi_group_incl erros

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


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