<div dir="auto"><div dir="ltr"><div dir="ltr">On Thu, Mar 26, 2020 at 2:48 PM jan &lt;<a href="mailto:rtm443x@googlemail.com" target="_blank" rel="noreferrer">rtm443x@googlemail.com</a>&gt; wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Pall,<br>
well I&#39;ve got it compiled, am reading through the manual while also<br>
trying to do as you suggest below and run it.<br>
<br>
I&#39;ve downloaded the benchmarks from the FTP site and trying to run<br>
them, but there aren&#39;t any topol.tpr (or any .tpr) files I can see.<br>
Plenty of topol.top so I tried that but it&#39;s rejected, saying that<br>
only .tpr files are acceptable.<br>
<br>
I tried renaming a topol.top to topol.tpr just in case but it doesn&#39;t<br>
like that either, saying something about file input/output error in<br>
futil.cpp, and mentions md.log, but it doesn&#39;t say where md.log has<br>
been put (doesn&#39;t seem to be in /var/log where I thought logs went,<br>
nor where the fmx executable lives, nor in the directory where the<br>
particular benchmark was placed)<br></blockquote><div><br></div><div>Sorry, the benchmark tarballs contained only &quot;raw&quot; inputs, while the mdrun tool expects a &quot;.tpr&quot; run input file. A tpr input is generated using the gmx grompp tool as a typical preparation step in a GROMACS molecular simulation workflow. Hence, you should run gmx grompp (iirc all raw input have the default filenames, so no arguments need to be passed) which will generate the tpr file.</div><div><br></div><div>That said, I do encourage you to go through Justin&#39;s tutorial, it is a great resource and could help you get an understanding of the typical MD workflow.</div><div><br></div><div><div><div dir="ltr">--<br>Szilárd</div></div></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">
<br>
Any ideas?<br>
<br>
cheers<br>
<br>
jan<br>
<br>
<br>
On 23/03/2020, Szilárd Páll &lt;<a href="mailto:pall.szilard@gmail.com" target="_blank" rel="noreferrer">pall.szilard@gmail.com</a>&gt; wrote:<br>
&gt; Jan,<br>
&gt;<br>
&gt; If you want to profile and try to tune performance, I suggest you focus on<br>
&gt; the main simulation tool called &quot;mdrun&quot; and in particular its core<br>
&gt; functionalities as this is the tool that will be consuming the vast<br>
&gt; majority of compute cycles.<br>
&gt;<br>
&gt; If you are using profiling tools to explore the code, find hot functions<br>
&gt; and such, I suggest that you grab one of the benchmark systems from here:<br>
&gt; <a href="http://ftp.gromacs.org/benchmarks/" rel="noreferrer noreferrer" target="_blank">http://ftp.gromacs.org/benchmarks/</a><br>
&gt; and run one of those (make sure to pick a &quot;PME&quot; input if there are<br>
&gt; multiple).<br>
&gt;<br>
&gt; And start by running those through a profiler ( e.g. run &quot;gmx mdrun -s<br>
&gt; topol.tpr -nsteps 1000&quot; for a 1000-iteration run). If you are proficient at<br>
&gt; profiling tools, you can also drop in manual annotation (or profiler<br>
&gt; start/stop) into out internal timer/profiler facilities (see<br>
&gt; src/gromacs/timing/wallcycle.cpp).<br>
&gt;<br>
&gt; Let us know if you have further questions.<br>
&gt;<br>
&gt; Cheers,<br>
&gt; --<br>
&gt; Szilárd<br>
&gt;<br>
&gt;<br>
&gt; On Mon, Mar 23, 2020 at 3:36 PM jan &lt;<a href="mailto:rtm443x@googlemail.com" target="_blank" rel="noreferrer">rtm443x@googlemail.com</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt; Hi, see below<br>
&gt;&gt;<br>
&gt;&gt; On 23/03/2020, cblau &lt;<a href="mailto:cblau@gwdg.de" target="_blank" rel="noreferrer">cblau@gwdg.de</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; [snip]<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; As GROMACS is already highly specialised, it is a bit challenging to<br>
&gt;&gt; &gt; speed up quickly (though definitely possible to contribute in<br>
&gt;&gt; &gt; meaningful<br>
&gt;&gt; &gt; ways).<br>
&gt;&gt;<br>
&gt;&gt; My initial look is profile then see look at the most basic things such<br>
&gt;&gt; as memory hierarchy use. I mean, really basic stuff which you&#39;ll<br>
&gt;&gt; already have covered but at least it&#39;s a learning phase for me.<br>
&gt;&gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; With all urgency in mind, there is quite a time-delay in the way new<br>
&gt;&gt; &gt; code gets incorporated, because we do very much require scientific<br>
&gt;&gt; &gt; correctness and thorough code review to make sure that all simulation<br>
&gt;&gt; &gt; results are meaningful and we don&#39;t waste a ton of people efforts and<br>
&gt;&gt; &gt; compute power on a slight bug.<br>
&gt;&gt;<br>
&gt;&gt; Is good<br>
&gt;&gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; The largest speed up in a short time frame (the next months) is inmy<br>
&gt;&gt; &gt; option achieved by teaching people how to use GROMACS in the most<br>
&gt;&gt; &gt; efficient ways and make sure that people running simulations run them<br>
&gt;&gt; &gt; correctly.<br>
&gt;&gt;<br>
&gt;&gt; Knowing how to use a tool correctly is best way to get good results. I<br>
&gt;&gt; keep seeing the results where this does not happen. So I get you.<br>
&gt;&gt; I&#39;ll look on the site for reading material but any other pointers<br>
&gt;&gt; would help - but bear in mind I&#39;m very new to this, and numerical<br>
&gt;&gt; simulation isn&#39;t my thing so start simple!<br>
&gt;&gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; If you like, we can briefly chat tomorrow on how GROMACS is set up and<br>
&gt;&gt; &gt; the &quot;usual ways&quot; to contribute to GROMACS if you send me a personal<br>
&gt;&gt; email.<br>
&gt;&gt; &gt;<br>
&gt;&gt;<br>
&gt;&gt; Will do<br>
&gt;&gt;<br>
&gt;&gt; thanks<br>
&gt;&gt;<br>
&gt;&gt; jan<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Best,<br>
&gt;&gt; &gt; Christian<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; On 2020-03-23 14:58, jan wrote:<br>
&gt;&gt; &gt;&gt; Hi,<br>
&gt;&gt; &gt;&gt; I&#39;m a general back-end dev.  Given the situation, and folding@home<br>
&gt;&gt; &gt;&gt; using gromacs, I thought I&#39;d poke through the code. I noticed<br>
&gt;&gt; &gt;&gt; something unexpected, and was advised to email it here. in edsam.cpp,<br>
&gt;&gt; &gt;&gt; this:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; void do_linacc(rvec* xcoll, t_edpar* edi)<br>
&gt;&gt; &gt;&gt; {<br>
&gt;&gt; &gt;&gt;      /* loop over linacc vectors */<br>
&gt;&gt; &gt;&gt;      for (int i = 0; i &lt; edi-&gt;vecs.linacc.neig; i++)<br>
&gt;&gt; &gt;&gt;      {<br>
&gt;&gt; &gt;&gt;          /* calculate the projection */<br>
&gt;&gt; &gt;&gt;          real proj = projectx(*edi, xcoll, edi-&gt;vecs.linacc.vec[i]);<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;          /* calculate the correction */<br>
&gt;&gt; &gt;&gt;          real preFactor = 0.0;<br>
&gt;&gt; &gt;&gt;          if (edi-&gt;vecs.linacc.stpsz[i] &gt; 0.0)<br>
&gt;&gt; &gt;&gt;          {<br>
&gt;&gt; &gt;&gt;              if ((proj - edi-&gt;vecs.linacc.refproj[i]) &lt; 0.0)<br>
&gt;&gt; &gt;&gt;              {<br>
&gt;&gt; &gt;&gt;                  preFactor = edi-&gt;vecs.linacc.refproj[i] - proj;<br>
&gt;&gt; &gt;&gt;              }<br>
&gt;&gt; &gt;&gt;          }<br>
&gt;&gt; &gt;&gt;          if (edi-&gt;vecs.linacc.stpsz[i] &lt; 0.0)<br>
&gt;&gt; &gt;&gt;          {<br>
&gt;&gt; &gt;&gt;              if ((proj - edi-&gt;vecs.linacc.refproj[i]) &gt; 0.0)<br>
&gt;&gt; &gt;&gt;              {<br>
&gt;&gt; &gt;&gt;                  preFactor = edi-&gt;vecs.linacc.refproj[i] - proj;<br>
&gt;&gt; &gt;&gt;              }<br>
&gt;&gt; &gt;&gt;          }<br>
&gt;&gt; &gt;&gt;         [...]<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; In both cases it reaches the same code<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;    preFactor = edi-&gt;vecs.linacc.refproj[i] - proj<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; That surprised me a bit, is it deliberate? If so it may be the code<br>
&gt;&gt; &gt;&gt; can be simplified anyway.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; That aside, if you&#39;re looking for performance I might be able to help.<br>
&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; rusty it creaks, but I can brush that up, do profiling and whatnot.<br>
&gt;&gt; &gt;&gt; I&#39;m pretty experience, just not in this area.  Speeding things up is<br>
&gt;&gt; &gt;&gt; something I&#39;ve got a track record of (though I usually have a good<br>
&gt;&gt; &gt;&gt; feel for the problem domain first, which I don&#39;t here)<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Would it be of some value for me to try getting more speed? If so,<br>
&gt;&gt; &gt;&gt; first thing I&#39;d need is to get this running under cygwin, which I&#39;m<br>
&gt;&gt; &gt;&gt; struggling with.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; regards<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; jan<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt; --<br>
&gt;&gt; &gt; Gromacs Developers mailing list<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; * Please search the archive at<br>
&gt;&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; &gt; posting!<br>
&gt;&gt; &gt;<br>
&gt;&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; &gt;<br>
&gt;&gt; &gt; * For (un)subscribe requests visit<br>
&gt;&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<br>
&gt;&gt; &gt; 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; &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 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>.</blockquote></div></div><div data-smartmail="gmail_signature">--<br>Szilárd</div></div>