Thanks, &nbsp;it sounds like things are under control.<div><br></div><div>I got to running the tests, and hit three problems there so far</div><div><br></div><div><span style="font-size:large"><span style="font-weight:bold">1)</span></span></div>


<div>This is the smallest but most clearly wrong code. &nbsp;I was failing the&nbsp;test/mpi/init/initstat.c test because&nbsp;MPI_Init_thread() and&nbsp;MPI_Query_thread() were returning different provided levels. &nbsp;</div><div><br></div><div>


When the device claims to handle&nbsp;MPI_THREAD_MULTIPLE, it gets set to &quot;runtime&quot;:</div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><span style="font-family:&#39;courier new&#39;;font-size:12px"># Threads must be supported by the device. &nbsp;First, set the default to</span><br>

<span style="font-family:&#39;courier new&#39;;font-size:12px"># be the highest supported by the device</span><br><span style="font-family:&#39;courier new&#39;;font-size:12px">if test &quot;$enable_threads&quot; = default ; then</span><br>


<span style="font-family:&#39;courier new&#39;;font-size:12px">&nbsp;&nbsp; &nbsp;if test -n &quot;$MPID_MAX_THREAD_LEVEL&quot; ; then</span><br><span style="font-family:&#39;courier new&#39;;font-size:12px">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;case $MPID_MAX_THREAD_LEVEL in</span><br>


<span style="font-family:&#39;courier new&#39;;font-size:12px">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MPI_THREAD_SINGLE) &nbsp; &nbsp; enable_threads=single ;;</span><br><span style="font-family:&#39;courier new&#39;;font-size:12px">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MPI_THREAD_FUNNELED) &nbsp; enable_threads=funneled ;;</span><br>


<span style="font-family:&#39;courier new&#39;;font-size:12px">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MPI_THREAD_SERIALIZED) enable_threads=serialized ;;</span><br><span style="font-family:&#39;courier new&#39;;font-size:12px">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MPI_THREAD_MULTIPLE) &nbsp; enable_threads=runtime ;;</span><br>


<span style="font-family:&#39;courier new&#39;;font-size:12px">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*) AC_MSG_ERROR([Unrecognized thread level from device $MPID_MAX_THREAD_LEVEL])</span><br><span style="font-family:&#39;courier new&#39;">&nbsp;&nbsp; &nbsp;</span><span style="white-space:pre"><span style="font-family:&#39;courier new&#39;">        </span></span><span style="font-family:&#39;courier new&#39;"> &nbsp; &nbsp;;;</span><br>


<span style="font-family:&#39;courier new&#39;;font-size:12px">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;esac</span><br><span style="font-family:&#39;courier new&#39;;font-size:12px">&nbsp;&nbsp; &nbsp;else</span><br>
<span style="font-family:&#39;courier new&#39;;font-size:12px">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;enable_threads=single</span><br><span style="font-family:&#39;courier new&#39;;font-size:12px">&nbsp;&nbsp; &nbsp;fi</span><br>
<span style="font-family:&#39;courier new&#39;;font-size:12px">fi</span><br><br><span class="Apple-style-span" style="font-family: &#39;courier new&#39;; font-size: 12px;">.........</span><br><span style="font-family:&#39;courier new&#39;;font-size:12px"># Runtime is an alias for multiple with an additional value</span><br>


<span style="font-family:&#39;courier new&#39;;font-size:12px">if test &quot;$enable_threads&quot; = &quot;runtime&quot; ; then</span><br><span style="font-family:&#39;courier new&#39;;font-size:12px">&nbsp;&nbsp; &nbsp;AC_DEFINE(HAVE_RUNTIME_THREADCHECK,1,[Define if MPI supports MPI_THREAD_MULTIPLE with a runtime check for thread level])</span><br>


<span style="font-family:&#39;courier new&#39;;font-size:12px">&nbsp;&nbsp; &nbsp;enable_threads=multiple</span><br><span style="font-family:&#39;courier new&#39;;font-size:12px">&nbsp;&nbsp; &nbsp;# FIXME: This doesn&#39;t support runtime:thread-impl (as in multiple:thread-impl)</span><br>


<span style="font-family:&#39;courier new&#39;;font-size:12px">fi</span><br></blockquote><div><div>This will cause&nbsp;<span style="font-family:&#39;courier new&#39;;font-size:12px">HAVE_RUNTIME_THREADCHECK<span style="font-family:arial;font-size:13px">&nbsp;to be defined. &nbsp;In MPI_Init_thread, this&nbsp;causes&nbsp;the&nbsp;provided&nbsp;data&nbsp;to&nbsp;be&nbsp;partially&nbsp;ignored. &nbsp;I see there is a &quot;fixme&quot; comment; did you have other plans for this code?<br>


</span></span></div></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><span style="font-family:&#39;courier new&#39;, monospace">&nbsp;&nbsp; 288 &nbsp; &nbsp; &nbsp;mpi_errno = MPID_Init(argc, argv, required, <span style="color:rgb(255, 0, 0)">&amp;thread_provided</span>,&nbsp;<br>


&nbsp;&nbsp; 289 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&amp;has_args, &amp;has_env);<br>&nbsp;&nbsp; 290 &nbsp; &nbsp; &nbsp;/* --BEGIN ERROR HANDLING-- */<br>&nbsp;&nbsp; 303 &nbsp; &nbsp; &nbsp;/* --END ERROR HANDLING-- */<br>&nbsp;&nbsp; 304 &nbsp;<br>&nbsp;&nbsp; 305 &nbsp; &nbsp; &nbsp;/* Capture the level of thread support provided */<br>


<span style="color:rgb(255, 0, 0)">&nbsp;&nbsp; 306 &nbsp; &nbsp; &nbsp;MPIR_ThreadInfo.thread_provided = thread_provided;</span><br>&nbsp;&nbsp; 307 &nbsp; &nbsp; &nbsp;if (provided) *provided = thread_provided;<br>&nbsp;&nbsp; 308 &nbsp; &nbsp; &nbsp;/* FIXME: Rationalize this with the above */<br>


&nbsp;&nbsp; 309 &nbsp;#ifdef HAVE_RUNTIME_THREADCHECK<br>&nbsp;&nbsp; 310 &nbsp; &nbsp; &nbsp;MPIR_ThreadInfo.isThreaded = required == MPI_THREAD_MULTIPLE;<br><span style="color:rgb(255, 0, 0)">&nbsp;&nbsp; 311 &nbsp; &nbsp; &nbsp;if (provided) *provided = required;</span><br>
&nbsp;&nbsp; 312 &nbsp;#endif</span><br></blockquote><div><div><span style="font-family:&#39;courier new&#39;;font-size:12px"><span style="font-family:arial;font-size:13px"><div>
Line 288 will get the &quot;provided&quot; information from the device, as before.</div><div>Line 306 will store the device-provided info into the MPI_Threadinfo struct, as before.</div><div>Line 311 will over-write the&nbsp;device-provided info and tell the user that the provided is the same as the requested.</div>


<div>Since this is MPI_Thread_query() code:</div><div><div>&nbsp;&nbsp; &nbsp;*provided = MPIR_ThreadInfo.thread_provided;</div><div>The device would have to always return MPI_THREAD_MULTIPLE or the two values will be different and inconsistent.</div>


<div>Either</div><div>A) The&nbsp;device must be completely ignored.</div><div>B) The provided thread level cannot be set higher than the device is willing.</div></div></span></span></div><div>Note: Choice (A) may break the threaded tests in mpich2/test/mpi/threads/, since they don&#39;t generally check the return value from phtread_create(), only that MPI_THREAD_MULTIPLE was provided. &nbsp;If threads cannot be started, these tests won&#39;t work.<br>


</div><br><br></div><br><span style="font-size:large"><span style="font-weight:bold">2)</span></span><br>I had&nbsp;to&nbsp;completely&nbsp;gut&nbsp;MPIU_Find_local_and_external()&nbsp;(same&nbsp;file&nbsp;as&nbsp;problem 2 before)&nbsp;because&nbsp;this&nbsp;generic&nbsp;code&nbsp;didn&#39;t&nbsp;know&nbsp;as&nbsp;much&nbsp;about&nbsp;the&nbsp;BG/P&nbsp;topology&nbsp;as&nbsp;it&nbsp;thought.&nbsp;&nbsp;It&nbsp;is&nbsp;running&nbsp;now&nbsp;that&nbsp;intra-comms&nbsp;work. &nbsp;I return a generic non-fatal error and the comm utils seem fine with it.<blockquote style="margin:0 0 0 40px;border:none;padding:0px">


<span style="font-family:&#39;courier new&#39;, monospace">int MPIU_Find_local_and_external(MPID_Comm *comm, int *local_size_p, int *local_rank_p, int **local_ranks_p,<br>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int *external_size_p, int *external_rank_p, int **external_ranks_p,<br>


&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int **intranode_table_p, int **internode_table_p)<br>{<br>&nbsp;&nbsp; &nbsp;return MPI_ERR_UNKNOWN;<br>}</span><br></blockquote><div><div><br></div><div><br></div><br><span style="font-size:large"><span style="font-weight:bold">3)</span></span><br>


I noticed that we got a hang because&nbsp;the&nbsp;build&nbsp;didn&#39;t&nbsp;pick&nbsp;up&nbsp;or&nbsp;custom&nbsp;CS_ENTER/EXIT&nbsp;macros.&nbsp;&nbsp;It&nbsp;looks&nbsp;like&nbsp;the&nbsp;&quot;threaded&quot;&nbsp;branch&nbsp;code&nbsp;for&nbsp;the&nbsp;macros&nbsp;is&nbsp;in&nbsp;this&nbsp;alpha&nbsp;release?&nbsp;&nbsp;I&nbsp;added&nbsp;some&nbsp;code&nbsp;to&nbsp;use&nbsp;MPID_DEFINES_MPID_CS&nbsp;to&nbsp;once-again&nbsp;allow&nbsp;a&nbsp;device&nbsp;to&nbsp;use&nbsp;custom&nbsp;macros. &nbsp;Unlike my &quot;work&quot; in the threaded branch, it is much more exacting. &nbsp;I will send these changes as a (git) patch in case you are interested. &nbsp;It can usually be applied using &quot;patch -p1&quot;.<div>

<br></div><div><br></div><div><br></div><div>Thanks,</div><div>Joe Ratterman</div><div><a href="mailto:jratt@us.ibm.com" target="_blank">jratt@us.ibm.com</a></div><div><br></div><div>
<br></div><div><br><div><div class="gmail_quote">On Fri, Nov 21, 2008 at 23:38, Dave Goodell <span dir="ltr">&lt;<a href="mailto:goodell@mcs.anl.gov" target="_blank">goodell@mcs.anl.gov</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div><br>
On Nov 20, 2008, at 2:24 PM, Joe Ratterman wrote:<br>
<br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>
Hi, &nbsp;I am working on merging the latest changes from this alpha in the the BG/P code. &nbsp;It fully compiles now--I haven&#39;t run the tests--but I had a few issues that I wanted to mention. &nbsp;Maybe someone already is working on solutions or can otherwise be of some help.<br>




<br>
1)<br></div>
PAC_CC_FUNCTION_NAME_SYMBOL (<a href="http://configure.in" target="_blank">configure.in</a>) doesn&#39;t work at all in cross-compilation environments, though I don&#39;t know of a good solution to that. [...]<br>
</blockquote>
<br>
It looks like David Gingold came to the same conclusion here: https://<a href="http://trac.mcs.anl.gov/projects/mpich2/ticket/300" target="_blank">trac.mcs.anl.gov/projects/mpich2/ticket/300</a><br>
<br>
Sorry for the breakage, we don&#39;t cross compile as often as you do and we didn&#39;t catch this one before the release. &nbsp;I haven&#39;t had the chance to dig in and fully grok this change yet, but I&#39;m sure we can come up with a fix soon-ish.<div>



<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
2)<br>
&quot;src/util/procmap/local_proc.c&quot; seems a bit troubling for us. &nbsp;We don&#39;t use a PMI device, and specify &quot;MPID_NO_PMI=yes&quot; in src/mpid/dcmfd/mpich2prereq. &nbsp;However, this file calls PMI_KVS_Get_key_length_max() from MPIU_Get_local_procs(). That did compile because C doesn&#39;t care too much, but it wouldn&#39;t link, even though we never call MPIU_Get_local_procs(). &nbsp;This is because the file also defines MPIU_Get_intranode_rank(), which is uses by both src/mpi/coll/reduce.c &amp; src/mpi/coll/bcast.c. &nbsp;I ended up simply deleting the entire MPIU_Get_local_procs() function to solve the problem. &nbsp;I am sure that isn&#39;t the answer, but I don&#39;t know what is the correct version.<br>




</blockquote>
<br></div>
This code is in need of a good dose of cleanup and improvement. &nbsp;It&#39;s not where I&#39;d like it to be but we elected to put it out there to see how people felt about the feature. &nbsp;Don&#39;t worry, this won&#39;t be the final version of this code. &nbsp;In your situation I suspect removing the code is what makes the most sense for now.<div>



<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
3)<br>
This one might be my problem, but I couldn&#39;t compile all the tests because neither the F77 nor F90 versions of f*/init/checksizes.c had actually been generated by the test/mpi/configure script. &nbsp;I don&#39;t know why not, but I had to copy them out of the <a href="http://configure.in" target="_blank">configure.in</a> script. &nbsp;There is no reference to them in the logs, and they are not part of the config.status script to be re-generated. &nbsp;I&#39;ll be looking into that one more, after I get the system running properly.<br>




</blockquote>
<br></div>
Bill has been making a bunch of changes in this area to clean up the test script and we might have accidentally excluded one of his changes from the release. &nbsp;I&#39;ve filed a ticket to track this here: <a href="https://trac.mcs.anl.gov/projects/mpich2/ticket/301" target="_blank">https://trac.mcs.anl.gov/projects/mpich2/ticket/301</a><br>



<font color="#888888">
<br>
-Dave<br>
<br>
</font></blockquote></div><br></div></div>
</div>