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 ...  */
}     

Reply via email to