<div>Hi, I am working on merging the latest changes from this alpha in the the BG/P code. It fully compiles now--I haven't run the tests--but I had a few issues that I wanted to mention. Maybe someone already is working on solutions or can otherwise be of some help.<br>
<br></div><div><span class="Apple-style-span" style="font-weight: bold;"><span class="Apple-style-span" style="font-size: large;">1)</span></span><br>PAC_CC_FUNCTION_NAME_SYMBOL (<a href="http://configure.in">configure.in</a>) doesn't work at all in cross-compilation environments, though I don't know of a good solution to that. This is an excerpt of the macro definition (confdb/aclocal_cc.m4):</div>
<blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><span class="Apple-style-span" style="font-family: 'courier new', monospace;">#include <string.h><br>int foo(void);<br>
int foo(void)<br>{<br> return (strcmp(__func__, "foo") == 0);<br>}<br>int main(int argc, char ** argv)<br>{<br> return (foo() ? 0 : 1);<br>}</span><br></blockquote><div><div>It is clearly not possible to evaluate that level of detail at compile-time. It would be possible to check that the compiler version of __func__ was the same length as the expected name. For example, this will compile iff the length of the __FUNCTION__ string is the same as the expected string:</div>
</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><span class="Apple-style-span" style="font-size: small;"><span class="Apple-style-span" style="font-family: 'courier new', monospace;">void v( int x )<br>
{<br> switch (x)<br> {<br> case 0:<br> break;<br> case (sizeof(__FUNCTION__) == sizeof("v")) :<br> break;<br> }<br>}</span></span><br></blockquote><div><div><div>It works in both SLES gcc and IBM XLc. By varying the name of the functions (and macro-izing the switch statement), it would be possible to be certain that the string was always the correct length. I think that would be an effective way of checking without running, but I don't know anything about most compilers. BTW, the idea of the "switch" statement is borrowed from some online examples of "compile-time-asserts", which are attempts to check certain constraints before the job is even run. The error isn't particularly helpful, but it does work.</div>
</div></div><div><div><br></div><div><br></div><div><span class="Apple-style-span" style="font-weight: bold;"><span class="Apple-style-span" style="font-size: large;">2)</span></span></div><div>"src/util/procmap/local_proc.c" seems a bit troubling for us. We don't use a PMI device, and specify "MPID_NO_PMI=yes" in src/mpid/dcmfd/mpich2prereq. However, this file calls PMI_KVS_Get_key_length_max() from MPIU_Get_local_procs(). That did compile because C doesn't care too much, but it wouldn't link, even though we never call MPIU_Get_local_procs(). This is because the file also defines MPIU_Get_intranode_rank(), which is uses by both src/mpi/coll/reduce.c & src/mpi/coll/bcast.c. I ended up simply deleting the entire MPIU_Get_local_procs() function to solve the problem. I am sure that isn't the answer, but I don't know what is the correct version.</div>
<div><br></div><div><br></div><div><span class="Apple-style-span" style="font-weight: bold;"><span class="Apple-style-span" style="font-size: large;">3)</span></span></div><div>This one might be my problem, but I couldn'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. I don't know why not, but I had to copy them out of the <a href="http://configure.in">configure.in</a> script. There is no reference to them in the logs, and they are not part of the config.status script to be re-generated. I'll be looking into that one more, after I get the system running properly.</div>
<div><br></div><div><br></div><div>Thanks for listening,</div><div>Joe Ratterman</div><div><a href="mailto:jratt@us.ibm.com">jratt@us.ibm.com</a></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div>
<div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br><div class="gmail_quote">On Mon, Nov 17, 2008 at 08:48, Pavan Balaji <span dir="ltr"><<a href="mailto:balaji@mcs.anl.gov">balaji@mcs.anl.gov</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Hi all,<br>
<br>
A new release of MPICH2 (1.1a1) is available from <a href="http://www.mcs.anl.gov/research/projects/mpich2/downloads/index.php?s=downloads" target="_blank">http://www.mcs.anl.gov/research/projects/mpich2/downloads/index.php?s=downloads</a><br>
<br>
This is a "feature-preview" release. MPICH2 developers, testers and other advanced users are encouraged to try this release out and let us know if you encounter any problems. This release is not intended for production systems at this time; such systems should continue to use the latest release from the 1.0.x branch (currently 1.0.8).<br>
<br>
The major additions in the 1.1a2 release are highlighted below.<br>
<br>
(Windows binaries are also available on the project website:<br>
<a href="http://www.mcs.anl.gov/research/projects/mpich2" target="_blank">http://www.mcs.anl.gov/research/projects/mpich2</a>).<br>
<br>
Regards,<br>
The MPICH2 Team<br>
<br>
--------------------------------------------------------------------------<br>
Main changes in the 1.1 release (a1 and a2)<br>
===========================================<br>
<br>
# OVERALL: Added MPI 2.1 support.<br>
<br>
# OVERALL: Nemesis is now the default configuration channel with a completely new TCP communication module.<br>
<br>
# OVERALL: Initial support for shared-memory aware collective communication operations.<br>
<br>
# PM/PMI: Initial support for the new Hydra process management framework (current support is only for ssh).<br>
<br>
# OVERALL: Support for BlueGene/P through the DCMF library (thanks to IBM for the patch).<br>
<br>
# OVERALL: Added dynamic processes support for Nemesis.<br>
<br>
# OVERALL: Added automatic as well as statically runtime configurable receive timeout variation for MPD (thanks to OSU for the patch).<br>
<br>
# ROMIO: Added support for MPI_Type_create_resized and MPI_Type_create_indexed_block datatypes in ROMIO.<br>
<br>
# Many other bug fixes, memory leak fixes and code cleanup. A full list of changes is available using:<br>
<br>
<a href="https://trac.mcs.anl.gov/projects/mpich2/log/mpich2/tags/release/mpich2-1.1a2?rev=HEAD&stop_rev=887&mode=follow_copy" target="_blank">https://trac.mcs.anl.gov/projects/mpich2/log/mpich2/tags/release/mpich2-1.1a2?rev=HEAD&stop_rev=887&mode=follow_copy</a><br>
<br>
or<br>
<br>
svn log -r813:HEAD <a href="https://svn.mcs.anl.gov/repos/mpi/mpich2/tags/release/mpich2-1.1a2" target="_blank">https://svn.mcs.anl.gov/repos/mpi/mpich2/tags/release/mpich2-1.1a2</a><br><font color="#888888">
<br>
-- <br>
Pavan Balaji<br>
<a href="http://www.mcs.anl.gov/~balaji" target="_blank">http://www.mcs.anl.gov/~balaji</a><br>
</font></blockquote></div><br></div></div>