<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jun 19, 2013 at 12:20 AM, Szilárd Páll <span dir="ltr">&lt;<a href="mailto:szilard.pall@cbr.su.se" target="_blank">szilard.pall@cbr.su.se</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Tue, Jun 18, 2013 at 7:15 PM, Mark Abraham &lt;<a href="mailto:mark.j.abraham@gmail.com">mark.j.abraham@gmail.com</a>&gt; wrote:<br>

&gt;<br>
&gt;<br>
&gt;<br>
&gt; On Tue, Jun 18, 2013 at 6:47 PM, Roland Schulz &lt;<a href="mailto:roland@utk.edu">roland@utk.edu</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; On Tue, Jun 18, 2013 at 11:05 AM, Mark Abraham &lt;<a href="mailto:mark.j.abraham@gmail.com">mark.j.abraham@gmail.com</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; On Mon, Jun 17, 2013 at 7:59 PM, Roland Schulz &lt;<a href="mailto:roland@utk.edu">roland@utk.edu</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; On Mon, Jun 17, 2013 at 1:10 PM, Mark Abraham<br>
&gt;&gt; &gt;&gt; &lt;<a href="mailto:mark.j.abraham@gmail.com">mark.j.abraham@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; On Mon, Jun 17, 2013 at 6:16 PM, Manuel Nuno Melo &lt;<a href="mailto:m.n.melo@rug.nl">m.n.melo@rug.nl</a>&gt;<br>
&gt;&gt; &gt;&gt; &gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; Hi,<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; I have also had linking problems when making in parallel. In my case<br>
&gt;&gt; &gt;&gt; &gt;&gt; they<br>
&gt;&gt; &gt;&gt; &gt;&gt; could be traced back to the option to let GMX download/build its own<br>
&gt;&gt; &gt;&gt; &gt;&gt; fftw<br>
&gt;&gt; &gt;&gt; &gt;&gt; (-DGMX_BUILD_OWN_FFTW=ON).<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; It seems that only one of make&#39;s threads starts building fftw, while<br>
&gt;&gt; &gt;&gt; &gt;&gt; the<br>
&gt;&gt; &gt;&gt; &gt;&gt; others go ahead building/linking GMX. Since fftw compilation is not<br>
&gt;&gt; &gt;&gt; &gt;&gt; ready by<br>
&gt;&gt; &gt;&gt; &gt;&gt; the time it is needed, GMX linking is botched.<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; Yes, Rossen first showed this to me. I don&#39;t know if the underlying<br>
&gt;&gt; &gt;&gt; &gt; issue is<br>
&gt;&gt; &gt;&gt; &gt; that the dependency cannot be described properly, or that we&#39;re not<br>
&gt;&gt; &gt;&gt; &gt; doing it<br>
&gt;&gt; &gt;&gt; &gt; properly. If it&#39;s a problem, people are welcome to contribute a fix!<br>
&gt;&gt; &gt;&gt; &gt; :-)<br>
&gt;&gt; &gt;&gt; It was working in <a href="https://gerrit.gromacs.org/#/c/1675/12" target="_blank">https://gerrit.gromacs.org/#/c/1675/12</a>. You then<br>
&gt;&gt; &gt;&gt; changed how the dependency works in patch set 13. You never replied to<br>
&gt;&gt; &gt;&gt; Christophs comment why this was changed (at least I can&#39;t find a<br>
&gt;&gt; &gt;&gt; reply). Do you remember?<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; I couldn&#39;t remember, but gerrit can - I never published a series of<br>
&gt;&gt; &gt; responses I made back then, sorry. Now published at<br>
&gt;&gt; &gt; <a href="https://gerrit.gromacs.org/1675" target="_blank">https://gerrit.gromacs.org/1675</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; Otherwise I can change it back as 12 did it<br>
&gt;&gt; &gt;&gt; and it should work again.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; It might do, but as I said in those secret drafts the form of patch 12<br>
&gt;&gt; &gt; doesn&#39;t work on cmake 2.8.7 because of a bug there in<br>
&gt;&gt; &gt; add_library(...GLOBAL)<br>
&gt;&gt; &gt; (and I suspect is probably too global, anyway, but this probably does no<br>
&gt;&gt; &gt; harm?).<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; So I&#39;m still not sure there&#39;s a convenient solution that works in all<br>
&gt;&gt; &gt; cases.<br>
&gt;&gt; &gt; Compromising the smooth running of a parallel make for someone<br>
&gt;&gt; &gt; downloading<br>
&gt;&gt; &gt; FFTW seems like the most low-impact problem of the set we could choose<br>
&gt;&gt; &gt; to<br>
&gt;&gt; &gt; have.<br>
&gt;&gt;<br>
&gt;&gt; Probably true. Just doesn&#39;t give a good first impression of us to new<br>
&gt;&gt; users.<br>
&gt;&gt; I think we should also consider for the future whether we really want<br>
&gt;&gt; to support ~11 unmaintained version of cmake (including for all our<br>
&gt;&gt; optional features). Downloading cmake is no big deal. They have<br>
&gt;&gt; binaries to download. And cmake doesn&#39;t fix any version but for the<br>
&gt;&gt; most recent version. So it seems odd that we try to maintain<br>
&gt;&gt; workarounds for the last ~11 versions which are all unmaintained by<br>
&gt;&gt; the cmake developers. That seems like it is going to stay a really<br>
&gt;&gt; annoying maintenance task.<br>
&gt;<br>
&gt;<br>
&gt; True. Now that we&#39;ve shown it is a PITA for the developers to work around a<br>
&gt; handful of known issues with various 2.8.x point releases of CMake, it<br>
&gt; sounds reasonable to me that we pick a late-model CMake 2.8.x as the<br>
&gt; requirement for GROMACS 5. That could open the door to an alternative<br>
&gt; implementation for self-built FFTW.<br>
<br>
</div></div>I agree that it is annoying having to work around CMake issues. At the<br>
same time, I think it would be a rather &quot;user-unfriendly&quot; move to<br>
require a very late version of CMake. As a user, it is fair to expect<br>
that building GROMACS is as hassle-free as possible.</blockquote><div><br></div><div style>Right. But I think all of the CMake issues have arisen while trying to make building GROMACS as hassle-free as possible. Here are just some of the known issues:</div>
<div style>1) we need something in 2.8.2 in order to download the regression tests via CMake</div><div style>2) 2.8.10 updated FindCUDA and changed the behaviour with respect to setting the host compiler for nvcc</div><div style>
3) 2.8.8 provides CMAKE_&lt;LANG&gt;_COMPILER_VERSION, for which we currently provide duplicate functionality in at least two places; this is mostly used for supporting tests for known versions of compilers that have missing or broken functionality</div>
<div style>4) we sometimes fall back on finding MPI, which didn&#39;t work well before 2.8.5 (and find_file() has a minor bug that was fixed in 2.8.10)</div><div style>5) can&#39;t check an MD5 sum of the downloaded FFTW library before 2.8.3</div>
<div style>6) one way to link the downloaded FFTW library doesn&#39;t work on 2.8.7</div><div style>Those are all things that we are trying to do to make a hassle-free GROMACS build experience. In some of the above cases we issue a fatal error and suggest a CMake upgrade anyway.</div>
<div style><br></div><div style>The principle has led the GROMACS devs to do a whole pile of &quot;extra&quot; work implementing those checks, and future work reading and maintaining that code. This is not sustainable. For GROMACS 4.6, we compromised on CMake 2.8 between developer convenience and the possibility users would not need to install cmake, which we did before realising we&#39;d be encouraging about half the users to update to a real compiler. Getting cmake at the same time is not a big deal. Requiring 2.8.10 for GROMACS 5 lets get rid of a lot of nonsense and go back to writing MD code.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> Hence, having to<br>
download CMake as a first step of the installation process will<br>
probably lead to many users not updating (early) to newer GROMACS<br>
versions.<br></blockquote><div><br></div><div style>I&#39;d much rather spend devs time writing documentation of their awesome new features, so that users know they can do cool science with the new version if they get a new CMake version (which they might re-use anyway). The needs of the few and the needs of the many are being traded off here. It&#39;s not like we&#39;re charging money selling shrink-wrapped software. :-)</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
In general, the issue is the way CMake development introduces changes<br>
in minor versions which affect behaviour. This can easily break<br>
fragile code in the build system. I don&#39;t have a good suggestion to<br>
overcome such problems, but I think that the choice of required<br>
minimum CMake version should depend on what versions provide the major<br>
Linux OS-es.<br></blockquote><div><br></div><div style>RHEL ships with a 2.6 (which drives CentOS and Scientific Linux). EPEL provides a 2.8.9, though.</div><div style>Current Ubuntu LTS (precise) has 2.8.7, but the next looks like it would have at least 2.8.11. Current stable has 2.8.10.</div>
<div style>Fedora 19 has 2.8.10.</div><div style>macports has 2.8.10</div><div style><br></div><div style>So it seems to me that requiring CMake 2.8.10 for a Feb 2014 release is quite reasonable.</div><div style><br></div>
<div style>Mark</div></div></div></div>