[mpich-discuss] Running one MPI program from another
Rod Cook
rod at cookies.demon.co.uk
Fri Apr 24 08:49:44 CDT 2009
[mpich-discuss] Running one MPI program from anotherJayesh
The environment block was the problem. I've included a modified version of the test program that works. I've also made the mod in my actual application and works OK .
Thanks for your help, much appreciated.
Rod
#include "stdafx.h"
#include "Userenv.h"
#include <afx.h>
#include "mpi.h"
int run_program( char * program )
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
LPVOID env = NULL;
CreateEnvironmentBlock(&env, NULL, FALSE);
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
if( !CreateProcess( NULL, // No module name (use command line)
program, // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
CREATE_UNICODE_ENVIRONMENT, // Created environment block contains unicode
env, // Use created environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi ) // Pointer to PROCESS_INFORMATION structure
)
{
return -1;
}
WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
return 0;
}
int main(int argc, char* argv[])
{
MPI_Init(NULL,NULL);
run_program("prog");
MPI_Finalize();
return 0;
}
----- Original Message -----
From: Jayesh Krishna
To: 'Rod Cook'
Cc: mpich-discuss at mcs.anl.gov
Sent: Thursday, April 23, 2009 3:53 PM
Subject: RE: [mpich-discuss] Running one MPI program from another
Hi,
Since you are passing in a NULL value for the environment block the new process created is inheriting the environment from the parent (since this environment includes the runtime env for an MPI process it should not be shared among two MPI processes). This could be your problem. Can you try passing a dummy environment block instead of NULL in CreateProcess() ?
Regards,
Jayesh
------------------------------------------------------------------------------
From: Rod Cook [mailto:rod at cookies.demon.co.uk]
Sent: Thursday, April 23, 2009 3:42 AM
To: Jayesh Krishna
Cc: mpich-discuss at mcs.anl.gov
Subject: Re: [mpich-discuss] Running one MPI program from another
Jayesh
Using "mpiexec -n 1 prog" doesn't work.
Cheers
Rod
----- Original Message -----
From: Jayesh Krishna
To: 'Rod Cook'
Cc: mpich-discuss at mcs.anl.gov
Sent: Wednesday, April 22, 2009 8:38 PM
Subject: [mpich-discuss] Running one MPI program from another
Hi,
Try launching "mpiexec -n 1 prog" instead of "prog" with CreateProcess(). Let us know if it works for you.
Regards,
Jayesh
--------------------------------------------------------------------------------
From: mpich-discuss-bounces at mcs.anl.gov [mailto:mpich-discuss-bounces at mcs.anl.gov] On Behalf Of Rod Cook
Sent: Wednesday, April 22, 2009 10:12 AM
To: Jayesh Krishna
Cc: mpich-discuss at mcs.anl.gov
Subject: Re: [mpich-discuss] Running one MPI program from another
Jayesh,
I can get my example code to work using MPI_Comm_spawn but it doesn't work for my actual application. The problem with using MPI_Comm_spawn is that I don't know how to tell that the spawned program has finished -- this is why I used CreateProcess because it is possible to wait for the program to terminate. The spawned program could be a non MPI executable or a standalone MPI executable which can't communicate with the program calling MPI_Comm_spawn.
Cheers,
Rod
----- Original Message -----
From: Jayesh Krishna
To: 'Rod Cook'
Cc: mpich-discuss at mcs.anl.gov
Sent: Wednesday, April 22, 2009 3:40 PM
Subject: RE: [mpich-discuss] Running one MPI program from another
Hi,
Did you try MPI_Comm_spawn() ?
Regards,
Jayesh
--------------------------------------------------------------------------------
From: mpich-discuss-bounces at mcs.anl.gov [mailto:mpich-discuss-bounces at mcs.anl.gov] On Behalf Of Rod Cook
Sent: Wednesday, April 22, 2009 7:50 AM
To: mpich-discuss at mcs.anl.gov
Subject: [mpich-discuss] Running one MPI program from another
Hi,
I am trying to run an MPI program (prog) from another MPI program (test) using CreateProcess under Windows XP. I am using MPICH2 v1.08.
Source for test
#include "stdafx.h"
#include <afx.h>
#include "mpi.h"
int run_program( char * program )
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
if( !CreateProcess( NULL, program, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi ) )
{
return -1;
}
WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
return 0;
}
int main(int argc, char* argv[])
{
MPI_Init(NULL,NULL);
run_program("prog");
MPI_Finalize();
return 0;
}
Source for prog
#include "stdafx.h"
#include "mpi.h"
int main(int argc, char* argv[])
{
MPI_Init( NULL, NULL );
MPI_Finalize();
return 0;
}
I get the following error when I run test:
>mpiexec -n 1 test
MPIDU_Sock_post_connect failed.
[0] PMI_ConnectToHost failed: unable to post a connect to Yellowtail yellowtail
:2057, error: Unknown error class, error stack:
MPIDU_Sock_post_connect(1228): unable to connect to Yellowtail yellowtail
on port 2057, exhausted all endpoints (errno -1)
MPIDU_Sock_post_connect(1275): unable to connect to on port 2057,
No connection could be made because the target machine actively refused it. (er
rno 10061)
MPIDU_Sock_post_connect(1275): unable to connect to yellowtail on port 2057, No
connection could be made because the target machine actively refused it. (errno
10061)
MPIDU_Sock_post_connect(1275): unable to connect to Yellowtail on port 2057, No
connection could be made because the target machine actively refused it. (errno
10061)
uPMI_ConnectToHost returning PMI_FAIL
[0] PMI_Init failed.
Fatal error in MPI_Init: Other MPI error, error stack:
MPIR_Init_thread(294): Initialization failed
MPID_Init(83)........: channel initialization failed
MPID_Init(334).......: PMI_Init returned -1
>
In my actual application prog is either a standalone MPI program which I can't change or a non MPI program (in which case test works) .
I'd be gratefull for any help.
Thanks
Rod Cook
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/mpich-discuss/attachments/20090424/19ee77c7/attachment-0001.htm>
More information about the mpich-discuss
mailing list