<br><font size=2 face="sans-serif">Hi Jayesh,</font>
<br>
<br><font size=2 face="sans-serif">Apologies if I was not clear in the
previous email. My main executable loads the dll in the beginning and while
it (exe) is running calls the dll for performing CPU intensive math. Previously
the dll used to be an executable that was run as a separate program with
MPI. What we are trying to do now, is to couple two separate programs into
one such that one of them becomes the main program and the second one needs
is called by first. For this reason we are converting the second program
into a dll that is loaded by the main as a shared library. </font>
<br>
<br><font size=2 face="sans-serif">However when the main program calls
the dll, we would like the dll to be run on multiple processors just as
it used to be run when it (the dll) was a standalone executable. </font>
<br>
<br><font size=2 face="sans-serif">Thanks,</font>
<br><font size=2 face="sans-serif">Amar</font>
<br><font size=2 face="sans-serif"><br>
----------------------------------------------------------------------------------<br>
Engine Performance &amp; Emissions<br>
Advanced Virtual Product Development , PD &amp; GT<br>
Caterpillar Inc. <br>
Phone &nbsp; &nbsp; : (309) 578-1283<br>
Email &nbsp; &nbsp; &nbsp;: PATEL_AMAR_K@cat.com<br>
----------------------------------------------------------------------------------</font>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>Jayesh Krishna &lt;jayesh@mcs.anl.gov&gt;</b>
</font>
<br><font size=1 face="sans-serif">Sent by: mpich-discuss-bounces@mcs.anl.gov</font>
<p><font size=1 face="sans-serif">08/15/2011 01:31 PM</font>
<table border>
<tr valign=top>
<td bgcolor=white>
<div align=center><font size=1 face="sans-serif">Please respond to<br>
mpich-discuss@mcs.anl.gov</font></div></table>
<br>
<td width=59%>
<table width=100%>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">To</font></div>
<td><font size=1 face="sans-serif">&quot;Amar K. Patel&quot; &lt;PATEL_AMAR_K@cat.com&gt;</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td><font size=1 face="sans-serif">mpich-discuss@mcs.anl.gov</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">Subject</font></div>
<td><font size=1 face="sans-serif">Re: [mpich-discuss] Running MPI jobs
without mpiexec</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<p><font size=1 face="sans-serif">Caterpillar: Confidential Green &nbsp;
&nbsp; &nbsp; &nbsp;Retain Until: 09/14/2011 &nbsp; &nbsp; &nbsp;
&nbsp;</font>
<p>
<br>
<br>
<br><tt><font size=2>Hi,<br>
 I am not sure what you mean by &quot;running&quot; a dll (Are you referring
to using &quot;rundll&quot; etc ? ). <br>
 What is the advantage that you get by running dlls instead of executables
?<br>
<br>
Regards,<br>
Jayesh<br>
<br>
----- Original Message -----<br>
From: &quot;Amar K. Patel&quot; &lt;PATEL_AMAR_K@cat.com&gt;<br>
To: jayesh@mcs.anl.gov<br>
Cc: mpich-discuss@mcs.anl.gov<br>
Sent: Monday, August 15, 2011 10:58:37 AM<br>
Subject: Re: [mpich-discuss] Running MPI jobs without mpiexec<br>
<br>
<br>
Hi Jayesh, <br>
<br>
Thanks for suggesting the two options earlier. I have been exploring them
since your recommendations and I would appreciate if you could answer these
follow-up questions. <br>
<br>
1. I have been looking at MPI_Comm_spawn_multiple and MPI_Comm_spawn under
MPI dynamic processes and I have concluded that for either of these options
to work, the callee binary should be an exe. Am I correct to conclude this?
<br>
<br>
Meaning that if I have the following line in my main code (call it myCode2.exe),
<br>
<br>
MPI_Comm_spawn_multiple(NHOST, progs, MPI_ARGVS_NULL, nproc, infos, 0,
MPI_COMM_WORLD, &amp;intercomm, MPI_ERRCODES_IGNORE); <br>
<br>
the binary specified under &quot;Progs&quot; argument should be an exe
and not a dll or a lib file. Is this correct ? <br>
<br>
Here is a little background on what I am trying to do here. <br>
I am trying to call a shared library (dll) that needs to be run on multiple
processors but I do not want the main calling program to be run on multiple
PCs. So basically, I need to run the main program (myCode2.exe) as a singleton
process which at run time needs to call a dll (myCode1.dll) and that dll
needs to be run on multiple processors. <br>
I have tried putting in MPI_Comm_spawn_multiple in the main program and
tried to call the dll through MPI_Comm_spawn_multiple but I get a runtime
error indicating that the program being called by MPI_Comm_spawn_multiple
is not an executable. <br>
<br>
2. Your other suggestion was launching mpiexec from the main program (myCode2.exe).
Are you suggesting using the system() function in myCode2.exe to launch
mpiexec which then launches myCode1? Wont this require myCode1 to be an
exe file to be launched with mpiexec command? In my case myCode1 used to
be compiled as a standalone exe file before, but we would now wish to compile
it as a dll that is loaded as a shared library and called by another larger
executable at run time. <br>
<br>
Thanks for your help. <br>
<br>
Amar <br>
<br>
<br>
<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Jayesh Krishna &lt;jayesh@mcs.anl.gov&gt; <br>
Sent by: mpich-discuss-bounces@mcs.anl.gov <br>
<br>
08/04/2011 03:28 PM &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;<br>
Please respond to <br>
mpich-discuss@mcs.anl.gov <br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br>
To &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mpich-discuss@mcs.anl.gov
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
<br>
cc &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PATEL_AMAR_K@cat.com
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
<br>
Subject &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp;Re: [mpich-discuss] Running MPI jobs without mpiexec <br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br>
<br>
<br>
Caterpillar: Confidential Green Retain Until: 09/03/2011 <br>
<br>
<br>
<br>
<br>
Hi, <br>
Two options come to my mind, <br>
<br>
# Take a look at MPI dynamic processes (http://www.mpi-forum.org/docs/mpi21-report/node197.htm#Node197).
<br>
# Launch mpiexec from myCode2. <br>
<br>
Regards, <br>
Jayesh <br>
----- Original Message ----- <br>
From: &quot;Amar K. Patel&quot; &lt;PATEL_AMAR_K@cat.com&gt; <br>
To: mpich-discuss@mcs.anl.gov <br>
Sent: Thursday, August 4, 2011 11:35:58 AM <br>
Subject: [mpich-discuss] Running MPI jobs without mpiexec <br>
<br>
<br>
<br>
Hello, <br>
<br>
I have MPI program that runs fine when it started with the command mpiexec
-n # myCode1.exe. I now need to call myCode1 from another code (say myCode2)
in such a way that myCode1 is a dll file which is loaded and called when
myCode2 is being executed. myCode2 is started without using mpiexec commad.
<br>
<br>
With this new setup I would like to call myCode1.dll and be able to use
the MPI features that have been embedded in it such that myCode1.dll can
be run on more than one CPU. Is such a thing possible ? If so, then I would
appreciate if someone could point me to a documentation or an example that
illustrates how to implement the changes needed in myCode1 and/or myCode2.
<br>
<br>
Here is an crude version of myCode1 and myCode2 that I am using. <br>
<br>
void myCode1() <br>
{ <br>
int rank; <br>
MPI_Init(x, x); <br>
MPI_Comm_rank(MPI_COMM_WORLD, &amp;rank); <br>
...... <br>
...... <br>
...... <br>
...... <br>
...... <br>
...... <br>
...... <br>
...... <br>
MPI_Finalize(); <br>
return; <br>
} <br>
<br>
<br>
int myCode2(int argc, char **argv) <br>
{ <br>
myCode1(); <br>
return 0; <br>
} <br>
_______________________________________________ <br>
mpich-discuss mailing list <br>
mpich-discuss@mcs.anl.gov <br>
https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss <br>
_______________________________________________ <br>
mpich-discuss mailing list <br>
mpich-discuss@mcs.anl.gov <br>
https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss <br>
<br>
_______________________________________________<br>
mpich-discuss mailing list<br>
mpich-discuss@mcs.anl.gov<br>
https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss<br>
</font></tt>
<br>