Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |  

This web mail archive is frozen.

This page is part of a frozen web archive of this mailing list.

You can still navigate around this archive, but know that no new mails have been added to it since July of 2016.

Click here to be taken to the new web archives of this list; it includes all the mails that are in this frozen archive plus all new mails that have been sent to the list since it was migrated to the new archives.

Subject: Re: [OMPI users] mpi_group_incl erros
From: Ralph Castain (rhc_at_[hidden])
Date: 2012-08-16 10:01:03


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