<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jun 19, 2013 at 3:48 PM, 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 Wed, Jun 19, 2013 at 2:19 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 Wed, Jun 19, 2013 at 12:20 AM, Szilárd Páll &lt;<a href="mailto:szilard.pall@cbr.su.se">szilard.pall@cbr.su.se</a>&gt;<br>
&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; 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;<br>
&gt;&gt; wrote:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &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; &gt;&gt;<br>
&gt;&gt; &gt;&gt; On Tue, Jun 18, 2013 at 11:05 AM, 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 7:59 PM, Roland Schulz &lt;<a href="mailto:roland@utk.edu">roland@utk.edu</a>&gt;<br>
&gt;&gt; &gt;&gt; &gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; On Mon, Jun 17, 2013 at 1:10 PM, Mark Abraham<br>
&gt;&gt; &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; &gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; On Mon, Jun 17, 2013 at 6:16 PM, Manuel Nuno Melo<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; &lt;<a href="mailto:m.n.melo@rug.nl">m.n.melo@rug.nl</a>&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Hi,<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; I have also had linking problems when making in parallel. In my<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; case<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; they<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; could be traced back to the option to let GMX download/build its<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; own<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; fftw<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; (-DGMX_BUILD_OWN_FFTW=ON).<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; It seems that only one of make&#39;s threads starts building fftw,<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; while<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; the<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; others go ahead building/linking GMX. Since fftw compilation is<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; not<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; ready by<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; the time it is needed, GMX linking is botched.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; Yes, Rossen first showed this to me. I don&#39;t know if the<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; underlying<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; issue is<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; that the dependency cannot be described properly, or that we&#39;re<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; not<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; doing it<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; properly. If it&#39;s a problem, people are welcome to contribute a<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; fix!<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; :-)<br>
&gt;&gt; &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; &gt;&gt; changed how the dependency works in patch set 13. You never replied<br>
&gt;&gt; &gt;&gt; &gt;&gt; to<br>
&gt;&gt; &gt;&gt; &gt;&gt; Christophs comment why this was changed (at least I can&#39;t find a<br>
&gt;&gt; &gt;&gt; &gt;&gt; reply). Do you remember?<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; I couldn&#39;t remember, but gerrit can - I never published a series of<br>
&gt;&gt; &gt;&gt; &gt; responses I made back then, sorry. Now published at<br>
&gt;&gt; &gt;&gt; &gt; <a href="https://gerrit.gromacs.org/1675" target="_blank">https://gerrit.gromacs.org/1675</a><br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; Otherwise I can change it back as 12 did it<br>
&gt;&gt; &gt;&gt; &gt;&gt; and it should work again.<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; It might do, but as I said in those secret drafts the form of patch<br>
&gt;&gt; &gt;&gt; &gt; 12<br>
&gt;&gt; &gt;&gt; &gt; doesn&#39;t work on cmake 2.8.7 because of a bug there in<br>
&gt;&gt; &gt;&gt; &gt; add_library(...GLOBAL)<br>
&gt;&gt; &gt;&gt; &gt; (and I suspect is probably too global, anyway, but this probably does<br>
&gt;&gt; &gt;&gt; &gt; no<br>
&gt;&gt; &gt;&gt; &gt; harm?).<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; So I&#39;m still not sure there&#39;s a convenient solution that works in all<br>
&gt;&gt; &gt;&gt; &gt; cases.<br>
&gt;&gt; &gt;&gt; &gt; Compromising the smooth running of a parallel make for someone<br>
&gt;&gt; &gt;&gt; &gt; downloading<br>
&gt;&gt; &gt;&gt; &gt; FFTW seems like the most low-impact problem of the set we could<br>
&gt;&gt; &gt;&gt; &gt; choose<br>
&gt;&gt; &gt;&gt; &gt; to<br>
&gt;&gt; &gt;&gt; &gt; have.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Probably true. Just doesn&#39;t give a good first impression of us to new<br>
&gt;&gt; &gt;&gt; users.<br>
&gt;&gt; &gt;&gt; I think we should also consider for the future whether we really want<br>
&gt;&gt; &gt;&gt; to support ~11 unmaintained version of cmake (including for all our<br>
&gt;&gt; &gt;&gt; optional features). Downloading cmake is no big deal. They have<br>
&gt;&gt; &gt;&gt; binaries to download. And cmake doesn&#39;t fix any version but for the<br>
&gt;&gt; &gt;&gt; most recent version. So it seems odd that we try to maintain<br>
&gt;&gt; &gt;&gt; workarounds for the last ~11 versions which are all unmaintained by<br>
&gt;&gt; &gt;&gt; the cmake developers. That seems like it is going to stay a really<br>
&gt;&gt; &gt;&gt; annoying maintenance task.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; True. Now that we&#39;ve shown it is a PITA for the developers to work<br>
&gt;&gt; &gt; around a<br>
&gt;&gt; &gt; handful of known issues with various 2.8.x point releases of CMake, it<br>
&gt;&gt; &gt; sounds reasonable to me that we pick a late-model CMake 2.8.x as the<br>
&gt;&gt; &gt; requirement for GROMACS 5. That could open the door to an alternative<br>
&gt;&gt; &gt; implementation for self-built FFTW.<br>
&gt;&gt;<br>
&gt;&gt; I agree that it is annoying having to work around CMake issues. At the<br>
&gt;&gt; same time, I think it would be a rather &quot;user-unfriendly&quot; move to<br>
&gt;&gt; require a very late version of CMake. As a user, it is fair to expect<br>
&gt;&gt; that building GROMACS is as hassle-free as possible.<br>
&gt;<br>
&gt;<br>
&gt; Right. But I think all of the CMake issues have arisen while trying to make<br>
&gt; building GROMACS as hassle-free as possible. Here are just some of the known<br>
&gt; issues:<br>
&gt; 1) we need something in 2.8.2 in order to download the regression tests via<br>
&gt; CMake<br>
&gt; 2) 2.8.10 updated FindCUDA and changed the behaviour with respect to setting<br>
&gt; the host compiler for nvcc<br>
&gt; 3) 2.8.8 provides CMAKE_&lt;LANG&gt;_COMPILER_VERSION, for which we currently<br>
&gt; provide duplicate functionality in at least two places; this is mostly used<br>
&gt; for supporting tests for known versions of compilers that have missing or<br>
&gt; broken functionality<br>
&gt; 4) we sometimes fall back on finding MPI, which didn&#39;t work well before<br>
&gt; 2.8.5 (and find_file() has a minor bug that was fixed in 2.8.10)<br>
&gt; 5) can&#39;t check an MD5 sum of the downloaded FFTW library before 2.8.3<br>
&gt; 6) one way to link the downloaded FFTW library doesn&#39;t work on 2.8.7<br>
&gt; Those are all things that we are trying to do to make a hassle-free GROMACS<br>
&gt; build experience. In some of the above cases we issue a fatal error and<br>
&gt; suggest a CMake upgrade anyway.<br>
&gt;<br>
&gt; The principle has led the GROMACS devs to do a whole pile of &quot;extra&quot; work<br>
&gt; implementing those checks, and future work reading and maintaining that<br>
&gt; code. This is not sustainable. For GROMACS 4.6, we compromised on CMake 2.8<br>
&gt; between developer convenience and the possibility users would not need to<br>
&gt; install cmake, which we did before realising we&#39;d be encouraging about half<br>
&gt; the users to update to a real compiler. Getting cmake at the same time is<br>
&gt; not a big deal. Requiring 2.8.10 for GROMACS 5 lets get rid of a lot of<br>
&gt; nonsense and go back to writing MD code.<br>
<br>
</div></div>I do agree with you to a fairly large extent. However, most of the<br>
above workarounds are meant to support non-essential features, so<br>
either a warning (e.g. &quot;skipping consitency check because CMake<br>
version &lt;2.8.X&quot;) or in other cases a fatal error (e.g. &quot;Insufficient<br>
CMake version for feature X&quot;) would be just fine instead of *<br>
hardcoded* very recent required version which would prevent users from<br>
building even if they don&#39;t use the feature which requires a late<br>
CMake version. Regarding points 2 and 3, those are good examples of<br>
minor feature additions which we could have chosen to ignore and stick<br>
to the legacy behavior, but we did not.<br></blockquote><div><br></div><div style>We currently offer the user the choice of &quot;update CMake and have all the convenient features if you want them&quot; or &quot;don&#39;t update CMake 2.8.x and maybe have to make decisions later.&quot; Different people will have different preferences there! :-)</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Additionally, having seen the development style of CMake, coming<br>
across issues which need workarounds on our side seems unavoidable. As<br>
it happened with 4.6, issues will  come up during development or<br>
(beta/RC) testing of a release. With the above reasoning, we&#39;d have to<br>
bump the required version quite a few times just to avoid<br>
complications. Instead, Instead I prefer to fix a moderately<br>
conservative required version during the development phase of a<br>
certain release and stick to that.<br></blockquote><div><br></div><div style>Nobody is suggesting having a rolling requirement. I think we&#39;re talking about what choice to make for our next major release. So far the leading suggestions on functionality seem to be 2.8.8 or 2.8.10.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
&gt;<br>
&gt;&gt; Hence, having to<br>
&gt;&gt; download CMake as a first step of the installation process will<br>
&gt;&gt; probably lead to many users not updating (early) to newer GROMACS<br>
&gt;&gt; versions.<br>
&gt;<br>
&gt;<br>
&gt; I&#39;d much rather spend devs time writing documentation of their awesome new<br>
&gt; features, so that users know they can do cool science with the new version<br>
&gt; if they get a new CMake version (which they might re-use anyway). The needs<br>
&gt; of the few and the needs of the many are being traded off here. It&#39;s not<br>
&gt; like we&#39;re charging money selling shrink-wrapped software. :-)<br>
&gt;<br>
&gt;&gt; In general, the issue is the way CMake development introduces changes<br>
&gt;&gt; in minor versions which affect behaviour. This can easily break<br>
&gt;&gt; fragile code in the build system. I don&#39;t have a good suggestion to<br>
&gt;&gt; overcome such problems, but I think that the choice of required<br>
&gt;&gt; minimum CMake version should depend on what versions provide the major<br>
&gt;&gt; Linux OS-es.<br>
&gt;<br>
&gt;<br>
&gt; RHEL ships with a 2.6 (which drives CentOS and Scientific Linux). EPEL<br>
&gt; provides a 2.8.9, though.<br>
&gt; Current Ubuntu LTS (precise) has 2.8.7, but the next looks like it would<br>
&gt; have at least 2.8.11. Current stable has 2.8.10.<br>
&gt; Fedora 19 has 2.8.10.<br>
&gt; macports has 2.8.10<br>
<br>
</div>12.04 LTS will be around at least until 2015 and many users will stick<br>
to it (like we do on all our compute and development machines).<br>
<br>
Don&#39;t get me wrong, I&#39;m not advocating sticking to the currently<br>
required v2.8.0, but I&#39;d prefer to be more conservative and require a<br>
version at least 1.5-2 years old, e.g. 2.8.8 or 2.8.7 (to cater for<br>
12.04 LTS).<br></blockquote><div><br></div><div style>2.8.10 was out in October 2012. By the time a hypothetical 2.8.10 requirement hits users (February 2014) it will be 15 months old. That seems acceptable to me, but so far there&#39;s only a minor relevant difference known (FindCUDA update, which we could back-port if we wanted). Having the reliable compiler version-checking functionality in 2.8.8 seems to me much more important than supporting a particular distro&#39;s LTS with 2.8.7.</div>
<div style><br></div><div style>Mark</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Cheers,<br>
--<br>
Szilard<br>
<div class="im HOEnZb"><br>
&gt; So it seems to me that requiring CMake 2.8.10 for a Feb 2014 release is<br>
&gt; quite reasonable.<br>
&gt;<br>
&gt; Mark<br>
&gt;<br>
</div><div class="HOEnZb"><div class="h5">&gt; --<br>
&gt; gmx-developers mailing list<br>
&gt; <a href="mailto:gmx-developers@gromacs.org">gmx-developers@gromacs.org</a><br>
&gt; <a href="http://lists.gromacs.org/mailman/listinfo/gmx-developers" target="_blank">http://lists.gromacs.org/mailman/listinfo/gmx-developers</a><br>
&gt; Please don&#39;t post (un)subscribe requests to the list. Use the<br>
&gt; www interface or send it to <a href="mailto:gmx-developers-request@gromacs.org">gmx-developers-request@gromacs.org</a>.<br>
--<br>
gmx-developers mailing list<br>
<a href="mailto:gmx-developers@gromacs.org">gmx-developers@gromacs.org</a><br>
<a href="http://lists.gromacs.org/mailman/listinfo/gmx-developers" target="_blank">http://lists.gromacs.org/mailman/listinfo/gmx-developers</a><br>
Please don&#39;t post (un)subscribe requests to the list. Use the<br>
www interface or send it to <a href="mailto:gmx-developers-request@gromacs.org">gmx-developers-request@gromacs.org</a>.<br>
</div></div></blockquote></div><br></div></div>