The code is a standard example I found somewhere. Here it is:<br><br>#include &lt;mpi.h&gt;<br>&nbsp;#include &lt;stdio.h&gt;<br>&nbsp;#include &lt;string.h&gt;<br><br>&nbsp;#define BUFSIZE 128<br>&nbsp;#define TAG 0<br><br>&nbsp;int main(int argc, char *argv[])<br>
&nbsp;{<br>&nbsp;&nbsp; char idstr[32];<br>&nbsp;&nbsp; char buff[BUFSIZE];<br>&nbsp;&nbsp; char processor_name[MPI_MAX_PROCESSOR_NAME];<br>&nbsp;&nbsp; int namelen;<br>&nbsp;&nbsp; int numprocs;<br>&nbsp;&nbsp; int myid;<br>&nbsp;&nbsp; int i;<br>&nbsp;&nbsp; MPI_Status stat;<br><br>&nbsp;&nbsp; MPI_Init(&amp;argc,&amp;argv); /* all MPI programs start with MPI_Init; all &#39;N&#39; processes exist thereafter */<br>
&nbsp;&nbsp; MPI_Comm_size(MPI_COMM_WORLD,&amp;numprocs); /* find out how big the SPMD world is */<br>&nbsp;&nbsp; MPI_Comm_rank(MPI_COMM_WORLD,&amp;myid); /* and this processes&#39; rank is */<br>&nbsp;&nbsp; MPI_Get_processor_name(processor_name, &amp;namelen);<br>
<br>&nbsp;&nbsp; /* At this point, all the programs are running equivalently, the rank is used to<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; distinguish the roles of the programs in the SPMD model, with rank 0 often used<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; specially... */<br>&nbsp;&nbsp; if(myid == 0)<br>
&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;%d(%s): We have %d processors\n&quot;, myid, processor_name, numprocs);<br>&nbsp;&nbsp;&nbsp;&nbsp; for(i=1;i&lt;numprocs;i++)<br>&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sprintf(buff, &quot;Hello %d! &quot;, i, processor_name);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MPI_Send(buff, BUFSIZE, MPI_CHAR, i, TAG, MPI_COMM_WORLD);<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; for(i=1;i&lt;numprocs;i++)<br>&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MPI_Recv(buff, BUFSIZE, MPI_CHAR, i, TAG, MPI_COMM_WORLD, &amp;stat);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;%d(%s): %s\n&quot;, myid, processor_name, buff);<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp; }<br>
&nbsp;&nbsp; else<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; /* receive from rank 0: */<br>&nbsp;&nbsp;&nbsp;&nbsp; MPI_Recv(buff, BUFSIZE, MPI_CHAR, 0, TAG, MPI_COMM_WORLD, &amp;stat);<br>&nbsp;&nbsp;&nbsp;&nbsp; sprintf(idstr, &quot;Processor %d (%s) reporting for duty\n&quot;, myid, processor_name);<br>
&nbsp;&nbsp;&nbsp;&nbsp; //strcat(buff, idstr);<br>&nbsp;&nbsp;&nbsp;&nbsp; //strcat(buff, &quot;reporting for duty (%s)\n&quot;, processor_name);<br>&nbsp;&nbsp;&nbsp;&nbsp; strcat(buff, idstr);<br>&nbsp;&nbsp;&nbsp;&nbsp; /* send to rank 0: */<br>&nbsp;&nbsp;&nbsp;&nbsp; MPI_Send(buff, BUFSIZE, MPI_CHAR, 0, TAG, MPI_COMM_WORLD);<br>
&nbsp;&nbsp; }<br><br>&nbsp;&nbsp; MPI_Finalize(); /* MPI Programs end with MPI Finalize; this is a weak synchronization point */<br>&nbsp;&nbsp; return 0;<br>&nbsp;}<br><br>It&#39;s really strange. I don&#39;t get. You know, the issue is that my colleague managed to get it to<br>
work. I followed the same manual (<a href="http://debianclusters.cs.uni.edu/index.php/Using_a_Scheduler_and_Queue">http://debianclusters.cs.uni.edu/index.php/Using_a_Scheduler_and_Queue</a>).<br>The openmpi was configured with these options:<br>
<br>./configure --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr/local --enable-shared --with-system-zlib --libexecdir=/usr/local/lib --without-included-gettext --enable-threads=posix --enable-nls --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-checking=release x86_64-linux-gnu --with-tm=/usr/local<br>
<br>The thing is that torque worked fine without openmpi. I use maui as a scheduler, and I have no problems with it as well.<br>Maybe I should turn to openmpi guys for help. <br><br>If anybody might know of anything that could help me I&#39;m listening.<br>
Thank you.<br><br><br><br><div class="gmail_quote">On Thu, Feb 21, 2008 at 3:03 PM, Craig West &lt;<a href="mailto:cwest@astro.umass.edu">cwest@astro.umass.edu</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
Hi Jozef,<br>
<br>
Not sure that I can really help any more. Its not something I&#39;ve seen.<br>
At a guess it could be related to your network, it could be the code you<br>
are running, perhaps faulty RAM?<br>
<br>
The code is the first thing I am suspicious of. Does this code run<br>
correctly if you manually run it (without the queue) on the same nodes.<br>
I noticed that the last snippet you set was for 8 processors, and again<br>
processors 1-7 were listed, and it appears that the first node in the<br>
list was the one that crashed. It looks like processor 0 could be the<br>
problem, hence my concern with the code. If you want to send me the<br>
source code I&#39;ll try it here and see what happens.<br>
<br>
<br>
The other thing I noticed is that your computers are not time<br>
synchronized. I would suggest setting up ntp, its not a must but can<br>
make life easier, especially when tracking faults between computers, and<br>
building code.<br>
<br>
Cheers,<br>
<font color="#888888">Craig.<br>
</font></blockquote></div><br>