<div dir="auto">Hello,<div dir="auto"><br></div><div dir="auto">I agree with Mark that the webinars should be a good start to have an idea a out the code.</div><div dir="auto"><br></div><div dir="auto">Concerning the error you are getting, this shouldn&#39;t happen if you work and build from a git repository. But it is still something I think should be fixed (especially because I have been the one pushing for it against Mark&#39;s objections)</div><div dir="auto"><br></div><div dir="auto">Cheers</div><div dir="auto"><br></div><div dir="auto">Paul</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, 24 Mar 2020, 19:50 Mark Abraham, &lt;<a href="mailto:mark.j.abraham@gmail.com">mark.j.abraham@gmail.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div>Hi gmx developers!</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, 24 Mar 2020 at 15:29, jan &lt;<a href="mailto:rtm443x@googlemail.com" target="_blank" rel="noreferrer">rtm443x@googlemail.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi all,<br>
given what&#39;s said below I need to be clear about where I am.<br>
I&#39;m a back-end dev specialising somewhat in SQL/RDBMSs + data<br>
management (but not data analysis of any note), with plenty of<br>
experience of other languages etc. however I have never done any<br>
x86/x64 as such, I normally use high-level languages, I have no<br>
experience at all with GPUs and (as already mentioned) my C/C++ is<br>
neolithic, and I&#39;ve no experience with the modern c/c++ build tools.<br>
My linux is not great.  And the nearest I can get to your kind of<br>
mathematics is a background in classical logic ie. not very close at<br>
all.<br>
<br>
None of these bother me; all are fixable, but it will take time. I&#39;ll<br>
need a minimal amount of guidance to get gowing - &quot;read this&quot; is fine<br>
but I&#39;ll need no handholding, and you don&#39;t have time for that anyway.<br></blockquote><div><br></div><div>Great - you&#39;re coming at the questions from a totally different perspective, which is healthy for everyone, but that&#39;s going to give you a steep learning curve. There&#39;s some useful recorded webinars from BioExcel given by particularly Paul, Szilard, Carsten, and I over recent years that are a good starting point for understanding how the code operates at run time, but you should look for something else for &quot;intro to molecular dynamics for non-scientists.&quot; There&#39;s a bunch of material online - has anybody got suggestions?<br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
First things first, I need to compile this stuff up.<br>
I&#39;m using windows + cygwin - is this the best environment or do you<br>
recommend working entirely in Linux?<br></blockquote><div><br></div><div>We test in CI on Windows + MSVC, so that works fine, but there has been no love on cygwin for about a decade. It&#39;s almost certainly fixable, but never been a priority. So go native one way or the other :-)<br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
I&#39;ve followed the instructions to get it working on cygwin and got<br>
stuck. Compilation fails with<br>
<br>
C:\Program Files\Python38\python.exe: can&#39;t open file<br>
&#39;/cygdrive/c/Users/jan/Desktop/gromacs/gromacs-2020.1/admin/createFileHash.py&#39;:<br>
[Errno 2] No such file or directory<br>
CMake Error at cmake/gmxGenerateVersionInfoRelease.cmake:115 (file):<br>
  file failed to open for reading (No such file or directory):<br>
    /cygdrive/c/Users/jan/Desktop/gromacs/gromacs-2020.1/computed_checksum<br>
<br>
computed_checksum indeed doesn&#39;t exist. What now?<br></blockquote><div><br></div><div>Sigh, that&#39;s broken implementation of a new feature that I never thought was worth its cost. Don&#39;t know how to fix it.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
The above is going by<br>
&lt;<a href="http://manual.gromacs.org/documentation/current/install-guide/index.html" rel="noreferrer noreferrer" target="_blank">http://manual.gromacs.org/documentation/current/install-guide/index.html</a>&gt;<br>
<br>
Other problem is that untarring the tarball works, however on windows<br>
it&#39;s natural to use something like 7-zip. This doesn&#39;t work and I lost<br>
a couple of hours to that (certainly not the fault of the instructions<br>
but FYI anyway).<br>
<br>
Comments below too<br>
<br>
<br>
On 24/03/2020, Mark Abraham &lt;<a href="mailto:mark.j.abraham@gmail.com" target="_blank" rel="noreferrer">mark.j.abraham@gmail.com</a>&gt; wrote:<br>
&gt; Hi,<br>
&gt;<br>
&gt; Jan, the biggest bang-for-buck optimizations relevant to Folding@Home are<br>
&gt; to<br>
&gt;<br>
&gt; a) offer to build them an OpenCL-enabled GROMACS &quot;core&quot; (ie the version of<br>
&gt; GROMACS that they run, when they run GROMACS). Currently they seem to run<br>
&gt; all GPU jobs with OpenCL and OpenMM, which is nice but leaves a lot of<br>
&gt; throughput on the table. The GROMACS OpenCL port is mature and stable, runs<br>
&gt; on AMD/NVIDIA/Intel current GPUs, and should present no more driver/user<br>
&gt; problems than their OpenMM one. Their concept of a GPU slot is a single GPU<br>
&gt; accompanied by a single CPU thread/, whereas the GROMACS OpenCL port would<br>
&gt; prefer multiple dedicated cores. That&#39;s still better than leaving GPUs<br>
&gt; empty if there&#39;s not enough OpenMM jobs in the queue, though the actual<br>
&gt; performance will be woeful compared to GROMACS when you give it a healthy<br>
&gt; chunk of CPU cores also. Could even be better than OpenMM&#39;s GPU core,<br>
&gt; depending how modern that one is, too ;-) The GROMACS CUDA port is better<br>
&gt; still (and in 2020 can do a decent job even with only a single CPU core),<br>
&gt; but they have made a philosophical choice to use OpenCL only.<br>
<br>
That has to come later when I get up to speed, but carefully noted, thanks.<br>
<br>
&gt; b) update the GROMACS CPU core in F@H because the one used in F@H is<br>
&gt; several years behind and losing the benefit of the hard optimization work<br>
&gt; that we&#39;ve done in the meantime.<br>
<br>
Why would f@h not do this already??<br></blockquote><div><br></div><div>Limited resources and priorities for it. It&#39;s a science-driven project, and if the people prepared to do the work want to use not-GROMACS for their science then that is that...<br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
But again, noted.<br>
<br>
&gt; c) demonstrate that they can maintainably and usefully offer more than two<br>
&gt; x86 builds of that GROMACS CPU core (GROMACS has lots of SIMD specialized<br>
&gt; flavours, but F@H only offers SSE4.1 and basic AVX from those flavours,<br>
<br>
Yes, thought this might be the case. Definitely worth it for newer chips.<br>
However, please note that SIMD performance for later chips do not<br>
always mix well with non-SIMD code and can overall *cost* performance<br>
&lt;<a href="https://blog.cloudflare.com/on-the-dangers-of-intels-frequency-scaling/" rel="noreferrer noreferrer" target="_blank">https://blog.cloudflare.com/on-the-dangers-of-intels-frequency-scaling/</a>&gt;<br></blockquote><div><br></div><div>Yes thanks, most of us know ;-) Just updating to add AVX2 would give a clear win.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
&gt; which leaves a lot of performance on the table on recent x86 CPUs. We<br>
&gt; already have all the logic needed to work out which pre-built GROMACS to<br>
&gt; download and run, because we use it in containerized GROMACS builds also.)<br>
&gt;<br>
&gt; Unfortunately they&#39;ve never open-sourced any of that, so finding out where<br>
&gt; to start is the first challenge. But that way you&#39;ll have a lot more impact<br>
&gt; sooner than you will from profiling GROMACS runs after 30 years of<br>
&gt; optimization. ;-)<br>
<br>
I dunno yet. Model tuning is beyond me obviously, but I&#39;ve seen some<br>
stuff in the code that I question WRT optimality. However if it&#39;s cold<br>
code or all memory bound then I&#39;ll be fixing the wrong thing. Time to<br>
profile, but need to get it to compile first.<br></blockquote><div><br></div><div>Memory? What&#39;s that? :-D GROMACS memory usage is typically measured in megabytes, with sophisticated data-parallelism to keep the working set for each core down around cache sizes. Obviously you can scale up the problem to get out of cache, but the problem sizes that suit interesting science are comparable with the amount of L3 cache you get on a socket these days.</div><div><br></div><div>There&#39;s a big pile of code in the repo that warrants exhaustive optimization, and a lot that is used by only a handful of people, which generally doesn&#39;t. It&#39;s hard to make a valuable impact in either kind of place, for different reasons.<br></div><div><br></div><div>Mark<br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Happy to take this offline and reduce mailing list clutter.<br>
<br>
cheers<br>
<br>
jan<br>
<br>
&gt;<br>
&gt; Mark<br>
&gt;<br>
&gt; On Mon, 23 Mar 2020 at 14:59, jan &lt;<a href="mailto:rtm443x@googlemail.com" target="_blank" rel="noreferrer">rtm443x@googlemail.com</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt; Hi,<br>
&gt;&gt; I&#39;m a general back-end dev.  Given the situation, and folding@home<br>
&gt;&gt; using gromacs, I thought I&#39;d poke through the code. I noticed<br>
&gt;&gt; something unexpected, and was advised to email it here. in edsam.cpp,<br>
&gt;&gt; this:<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; void do_linacc(rvec* xcoll, t_edpar* edi)<br>
&gt;&gt; {<br>
&gt;&gt;     /* loop over linacc vectors */<br>
&gt;&gt;     for (int i = 0; i &lt; edi-&gt;vecs.linacc.neig; i++)<br>
&gt;&gt;     {<br>
&gt;&gt;         /* calculate the projection */<br>
&gt;&gt;         real proj = projectx(*edi, xcoll, edi-&gt;vecs.linacc.vec[i]);<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;         /* calculate the correction */<br>
&gt;&gt;         real preFactor = 0.0;<br>
&gt;&gt;         if (edi-&gt;vecs.linacc.stpsz[i] &gt; 0.0)<br>
&gt;&gt;         {<br>
&gt;&gt;             if ((proj - edi-&gt;vecs.linacc.refproj[i]) &lt; 0.0)<br>
&gt;&gt;             {<br>
&gt;&gt;                 preFactor = edi-&gt;vecs.linacc.refproj[i] - proj;<br>
&gt;&gt;             }<br>
&gt;&gt;         }<br>
&gt;&gt;         if (edi-&gt;vecs.linacc.stpsz[i] &lt; 0.0)<br>
&gt;&gt;         {<br>
&gt;&gt;             if ((proj - edi-&gt;vecs.linacc.refproj[i]) &gt; 0.0)<br>
&gt;&gt;             {<br>
&gt;&gt;                 preFactor = edi-&gt;vecs.linacc.refproj[i] - proj;<br>
&gt;&gt;             }<br>
&gt;&gt;         }<br>
&gt;&gt;        [...]<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; In both cases it reaches the same code<br>
&gt;&gt;<br>
&gt;&gt;   preFactor = edi-&gt;vecs.linacc.refproj[i] - proj<br>
&gt;&gt;<br>
&gt;&gt; That surprised me a bit, is it deliberate? If so it may be the code<br>
&gt;&gt; can be simplified anyway.<br>
&gt;&gt;<br>
&gt;&gt; That aside, if you&#39;re looking for performance I might be able to help.<br>
&gt;&gt; I don&#39;t know the high level stuff *at this point* and my C++ is so<br>
&gt;&gt; rusty it creaks, but I can brush that up, do profiling and whatnot.<br>
&gt;&gt; I&#39;m pretty experience, just not in this area.  Speeding things up is<br>
&gt;&gt; something I&#39;ve got a track record of (though I usually have a good<br>
&gt;&gt; feel for the problem domain first, which I don&#39;t here)<br>
&gt;&gt;<br>
&gt;&gt; Would it be of some value for me to try getting more speed? If so,<br>
&gt;&gt; first thing I&#39;d need is to get this running under cygwin, which I&#39;m<br>
&gt;&gt; struggling with.<br>
&gt;&gt;<br>
&gt;&gt; regards<br>
&gt;&gt;<br>
&gt;&gt; jan<br>
&gt;&gt; --<br>
&gt;&gt; Gromacs Developers mailing list<br>
&gt;&gt;<br>
&gt;&gt; * Please search the archive at<br>
&gt;&gt; <a href="http://www.gromacs.org/Support/Mailing_Lists/GMX-developers_List" rel="noreferrer noreferrer" target="_blank">http://www.gromacs.org/Support/Mailing_Lists/GMX-developers_List</a> before<br>
&gt;&gt; posting!<br>
&gt;&gt;<br>
&gt;&gt; * Can&#39;t post? Read <a href="http://www.gromacs.org/Support/Mailing_Lists" rel="noreferrer noreferrer" target="_blank">http://www.gromacs.org/Support/Mailing_Lists</a><br>
&gt;&gt;<br>
&gt;&gt; * For (un)subscribe requests visit<br>
&gt;&gt; <a href="https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-developers" rel="noreferrer noreferrer" target="_blank">https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-developers</a><br>
&gt;&gt; or send a mail to <a href="mailto:gmx-developers-request@gromacs.org" target="_blank" rel="noreferrer">gmx-developers-request@gromacs.org</a>.<br>
&gt;&gt;<br>
&gt;<br>
-- <br>
Gromacs Developers mailing list<br>
<br>
* Please search the archive at <a href="http://www.gromacs.org/Support/Mailing_Lists/GMX-developers_List" rel="noreferrer noreferrer" target="_blank">http://www.gromacs.org/Support/Mailing_Lists/GMX-developers_List</a> before posting!<br>
<br>
* Can&#39;t post? Read <a href="http://www.gromacs.org/Support/Mailing_Lists" rel="noreferrer noreferrer" target="_blank">http://www.gromacs.org/Support/Mailing_Lists</a><br>
<br>
* For (un)subscribe requests visit<br>
<a href="https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-developers" rel="noreferrer noreferrer" target="_blank">https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-developers</a> or send a mail to <a href="mailto:gmx-developers-request@gromacs.org" target="_blank" rel="noreferrer">gmx-developers-request@gromacs.org</a>.<br>
</blockquote></div></div>
-- <br>
Gromacs Developers mailing list<br>
<br>
* Please search the archive at <a href="http://www.gromacs.org/Support/Mailing_Lists/GMX-developers_List" rel="noreferrer noreferrer" target="_blank">http://www.gromacs.org/Support/Mailing_Lists/GMX-developers_List</a> before posting!<br>
<br>
* Can&#39;t post? Read <a href="http://www.gromacs.org/Support/Mailing_Lists" rel="noreferrer noreferrer" target="_blank">http://www.gromacs.org/Support/Mailing_Lists</a><br>
<br>
* For (un)subscribe requests visit<br>
<a href="https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-developers" rel="noreferrer noreferrer" target="_blank">https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-developers</a> or send a mail to <a href="mailto:gmx-developers-request@gromacs.org" target="_blank" rel="noreferrer">gmx-developers-request@gromacs.org</a>.</blockquote></div>