Hello, Working with different MPI flavours, I have encountered limits when using MPI_spawn and threads.
The limit is that the number of spawns that can be made is limited. Over a given limit the application crashes. I am trying to overcome the limitation but launching a new process that will make the spawn in place of the initial mpi process. I actually fail to launch the "launching process" when it is a MPI process. If it is a "classic" program it works. I tried to launch the "launching" process with the "system" call and the "fork-exec" call. If the launced program is a non mpi program all works fine. If it is a mpi program it fails to run. This has been overcome using ssh to run the mpi program but it not satisfactory. Follows a short example of one of the different tries. FYI a try without using MPI_THREAD... has also been made leading to the same results. Solution 1:start with "mpiexec --mca btl_tcp_if_exclude lo,eth1 --hostfile hostfile.txt -n 1 Test" ********************************************************************** ---------------------------------------------------------------------- *first process : solution1.c build :mpicc -g -Wall solution1.c -o Test ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <ctype.h> #include <sys/types.h> #include <sys/types.h> #include <fcntl.h> #include "mpi.h" #include <unistd.h> int main(int argc, char *argv[]){ int ThreadLevelWanted=MPI_THREAD_MULTIPLE; int ThreadLevelNew=MPI_THREAD_MULTIPLE; printf("MPI_Init_thread start\n"); if(MPI_SUCCESS!=MPI_Init_thread( &argc, &argv, ThreadLevelWanted, &ThreadLevelNew )){ printf("****************************************************\n"); printf("** ERROR **\n"); printf("****************************************************\n"); return -1; } printf("system return : %i\n", system("/usr/bin/mpiexec --mca btl_tcp_if_exclude lo,eth1 --hostfile hostfile.txt -n 1 ExeToStart"); sleep (100); printf(" byebye "); return 0; } ---------------------------------------------------------------------- *Second process : ExeToStart.c build :mpicc -g -Wall ExeToStart.c -o ExeToStart ---------------------------------------------------------------------- #include <stdio.h> int main( int argc, char **argv ) { printf("hello\n"); sleep (20); printf("byebye\n"); } This test program doesn't start the second process; If I don't make the "MPI_Init_thread" at the beggining of the first process there is no problem, but I need a MPI environnement for the two processes. Thank you for you help.