[mpich-devel] call PMI before MPI_Init_thread?
Jeff Hammond
jeff.science at gmail.com
Tue Apr 21 23:17:57 CDT 2015
So MPICH doesn't fail when I try this on my Mac, but it would be good
to know if I have a reasonable expectation of doing this in general.
Thanks,
Jeff
jrhammon-mac01:ENDPOINTS jrhammon$ mpiexec -n 4 ./a.out
PMI says I am 2 of 4
PMI says I am 0 of 4
PMI says I am 1 of 4
PMI says I am 3 of 4
MPI says I am 0 of 4 (provided=1)
MPI says I am 2 of 4 (provided=1)
MPI says I am 3 of 4 (provided=3)
MPI says I am 1 of 4 (provided=3)
jrhammon-mac01:ENDPOINTS jrhammon$ cat pmi.c
#include <stdio.h>
#include <stdlib.h>
/*#include <pmi.h>*/
int PMI_Init( int *spawned );
int PMI_Finalize( void );
int PMI_Get_size( int *size );
int PMI_Get_rank( int *rank );
#include <mpi.h>
int main(int argc, char * argv[])
{
int has_parent;
PMI_Init(&has_parent);
int rank, size;
PMI_Get_size(&size);
PMI_Get_rank(&rank);
printf("PMI says I am %d of %d \n", rank, size);
fflush(stdout);
int requested = (rank%2==0) ? MPI_THREAD_FUNNELED : MPI_THREAD_MULTIPLE;
int provided;
MPI_Init_thread(&argc, &argv, requested, &provided);
int wsize, wrank;
MPI_Comm_size(MPI_COMM_WORLD, &wsize);
MPI_Comm_rank(MPI_COMM_WORLD, &wrank);
printf("MPI says I am %d of %d (provided=%d)\n", wrank, wsize, provided);
fflush(stdout);
MPI_Finalize();
//PMI_Finalize(); /* required? */
return 0;
}
On Tue, Apr 21, 2015 at 9:09 PM, Jeff Hammond <jeff.science at gmail.com> wrote:
> Is it valid in _MPICH_ to make calls to PMI before MPI is initialized?
> I am interested in PMI_Init, PMI_Get_size and PMI_Get_rank.
>
> The motivating use case is to initialize e.g. half my ranks with
> MPI_THREAD_FUNNELED and the other half with MPI_THREAD_MULTIPLE but
> not use MPMD launching.
>
> I have two reasons for wanting to do it this way. First, it is
> otherwise unnecessary to use MPMD since I can branch at the top of my
> code and meet the requirements of FUNNELED and MULTIPLE. Second, I
> might be interested in running my code on a supercomputer with an
> MPICH-based MPI implementation that does not support MPMD launching in
> an unrestricted manner.
>
> If MPICH can handle this, then I will worry about whether or not the
> aforementioned supercomputer can. It is my assumption that, if MPICH
> cannot handle this, then the MPICH derivative in question cannot
> either.
>
> Thanks,
>
> Jeff
>
> --
> Jeff Hammond
> jeff.science at gmail.com
> http://jeffhammond.github.io/
--
Jeff Hammond
jeff.science at gmail.com
http://jeffhammond.github.io/
More information about the devel
mailing list