OK, so I guess that makes sense that you can not run a non-mpi program, and an mpi program.<br><br>The real programs that we are trying to run, one has the MPI::Init() right at the top of the main function, and the other has it buried all the way down inside of a constructor of an object that it creates.&nbsp; Is there an issue with when each app would call MPI::Init()??
<br><br>Thinking about this more, I would guess that MPI::Init() would have to be called in the main thread, and right now I'm not sure that this object is being created in the main thread.&nbsp; Will have to check when I'm in front of the code.
<br><br>Thanks alot for the help . . . still learning all the intricacies of MPI and MPICH.<br><br>Matt<br><br><div><span class="gmail_quote">On 5/4/06, <b class="gmail_sendername">Ralph Butler</b> &lt;<a href="mailto:rbutler@mtsu.edu">
rbutler@mtsu.edu</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">&gt; Hi Matthew:<br>&gt;<br>&gt; If you run something like this:
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; mpiexec -n 1 master_mpi_pgm : -n 8 slave_mpi_pgm<br>&gt; you are saying that you have a 9 process MPI process job that<br>&gt; happens to run 2 different programs.<br>&gt; If you were to call MPI_Comm_size in this program, you would get 21.
<br><br>&nbsp;&nbsp;&nbsp;&nbsp; Correction: you would get 9<br><br>&gt; When running MPI programs, mpd assumes that the entire set of of<br>&gt; processes are part of the computation.<br>&gt; So using mpd, it is not allowed to run a mixed bag of MPI and non-
<br>&gt; MPI processes in a single job.<br>&gt; If you run this:<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; mpiexec -n 1 mpi_pgm : -n 1 non_mpi_pgm<br>&gt; The mpi_pgm will hang at MPI_Init trying to set up the communicator<br>&gt; for what it believes is a 2 process job.
<br>&gt;<br>&gt; --ralph<br>&gt;<br>&gt; On May 4, 2006, at 8:55 PM, Matthew Siegel wrote:<br>&gt;<br>&gt;&gt; Hi all,<br>&gt;&gt;<br>&gt;&gt; Thanks for the help in advance.&nbsp;&nbsp;Here's a detailed explanantion of<br>&gt;&gt; the problem I'm running in to.
<br>&gt;&gt;<br>&gt;&gt; A little background . . . I am running the latest MPICH2.&nbsp;&nbsp;I am<br>&gt;&gt; using Rocks, running on Xeon EM64T processors with Gig-E IP<br>&gt;&gt; between the compute nodes.&nbsp;&nbsp;Not completely relevant, but want to
<br>&gt;&gt; be complete.<br>&gt;&gt;<br>&gt;&gt; I have written an app that has the following source code.&nbsp;&nbsp;It is a<br>&gt;&gt; very very simple because my real program which is quite<br>&gt;&gt; complicated was not working, and I figured that this app would
<br>&gt;&gt; work just fine.<br>&gt;&gt;<br>&gt;&gt; #include &lt; mpi.h&gt;<br>&gt;&gt; #include &lt;stdio.h&gt;<br>&gt;&gt;<br>&gt;&gt; int main(int argc, char** argv) {<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; MPI::Init(argc, argv);<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;My app is running!!!!\n&quot;);
<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; MPI::Finalize();<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br>&gt;&gt; }<br>&gt;&gt;<br>&gt;&gt; I compiled it like this:<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; mpicxx -o my_app my_app.cpp<br>&gt;&gt;<br>&gt;&gt; I start an mpd daemon on the the head node 'mpd &amp;', and verify
<br>&gt;&gt; with mpdtrace.&nbsp;&nbsp;So far so good.<br>&gt;&gt;<br>&gt;&gt; I then execute the following:<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; mpiexec -l -n 1 ./myapp<br>&gt;&gt;<br>&gt;&gt; and I get:<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 0: My app is running!!!!<br>&gt;&gt;
<br>&gt;&gt; and it quits.&nbsp;&nbsp;I then run:<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; mpiexec -l -n 4 ./myapp<br>&gt;&gt;<br>&gt;&gt; and I get (as expected):<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 0: My app is running!!!!<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 1: My app is running!!!!<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 3: My app is running!!!!
<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 2: My app is running!!!!<br>&gt;&gt;<br>&gt;&gt; OK, so this is good so far.&nbsp;&nbsp; Here's where things go awry...<br>&gt;&gt;<br>&gt;&gt; I then run:<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; mpiexec -l -n 1 hostname : -n 1 date<br>&gt;&gt;
<br>&gt;&gt; and I get (again as expected):<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 0: &lt;hostname&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 1: &lt;date&gt;<br>&gt;&gt;<br>&gt;&gt; Then I run (and here's where the problem is):<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; mpiexec -l -n 1 ./myapp : -n 1 hostname
<br>&gt;&gt;<br>&gt;&gt; and I get:<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 1: &lt;hostname&gt;<br>&gt;&gt;<br>&gt;&gt; And NOTHING else!&nbsp;&nbsp;Just hangs FOREVER . . . have to hit CTRL-C to<br>&gt;&gt; quit.<br>&gt;&gt;<br>&gt;&gt; This continues regardless of the order that I run my app in,
<br>&gt;&gt; whether it's the first or second on the line, it does not matter.<br>&gt;&gt; Also, this is true regardless of the &quot;other&quot; app that I am<br>&gt;&gt; running, not necessarilly just 'hostname' or 'date', and does not
<br>&gt;&gt; matter how many nodes that I am using.&nbsp;&nbsp;The real apps that I am<br>&gt;&gt; trying to run both are using MPI and am trying to pass data<br>&gt;&gt; between the two processes.&nbsp;&nbsp;I have rebuilt MPICH2 multiple times,
<br>&gt;&gt; and tried various configure options with zero luck.<br>&gt;&gt;<br>&gt;&gt; Please help, this has become a showstopper for me.<br>&gt;&gt;<br>&gt;&gt; Thanks!<br>&gt;&gt;<br>&gt;&gt; Matt<br>&gt;<br><br></blockquote>
</div><br>