proper way to detect if program launched by mpiexec?
I wrote a trivial program that uses MPI_Comm_spawn. It works when I launch with mpiexec but not if I run directly. 1) Is this a bug in MPICH? 2) What is the proper way for the program to detect how the program was launched? I would like to provide a helpful warning message... Thanks! Jeff jrhammon-mac01:comm_spawn jrhammon$ ./parent I am 0 of 1 for the parent program. [[email protected]] match_arg (../../../../src/pm/hydra/utils/args/args.c:159): unrecognized argument pmi_args [[email protected]] HYDU_parse_array (../../../../src/pm/hydra/utils/args/args.c:174): argument matching returned error [[email protected]] parse_args (../../../../src/pm/hydra/ui/mpich/utils.c:1596): error parsing input array [[email protected]] HYD_uii_mpx_get_parameters (../../../../src/pm/hydra/ui/mpich/utils.c:1648): unable to parse user arguments [[email protected]] main (../../../../src/pm/hydra/ui/mpich/mpiexec.c:153): error parsing parameters ^C jrhammon-mac01:comm_spawn jrhammon$ mpiexec -n 1 ./parent I am 0 of 1 for the parent program. I am 0 of 1 for the child program. ==> parent.c <== #include <stdio.h> #include <mpi.h> int main(int argc, char * argv[]) { MPI_Init(&argc,&argv); int size, rank; MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); printf("I am %d of %d for the parent program.\n", rank, size); MPI_Comm intercomm; int errors[size]; MPI_Comm_spawn( (char*)"./child", MPI_ARGV_NULL, 1, MPI_INFO_NULL, 0 /* root */, MPI_COMM_WORLD, &intercomm, errors); MPI_Finalize(); return 0; } ==> child.c <== #include <stdio.h> #include <mpi.h> int main(int argc, char * argv[]) { MPI_Init(&argc,&argv); int size, rank; MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); printf("I am %d of %d for the child program.\n", rank, size); MPI_Finalize(); return 0; } ==> Makefile <== CC = mpicc CFLAGS = -g -O2 -Wall -std=c99 LD = $(CC) LDFLAGS = $(COPT) LIBS = TESTS= parent child all: $(TESTS) %: %.o $(CC) $(CFLAGS) $< $(LIBS) -o $@ clean: -rm -f *.o -rm -f $(TESTS) -- Jeff Hammond [email protected] http://jeffhammond.github.io/
participants (1)
-
Jeff Hammond