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