<div dir="ltr">Hi Lars,<div><br></div><div>Nek5000 doesn't implement any sort of parallelism within the elements.  Typical element sizes are 8x8x8 or 12x12x12, so that hard coarse granularity limit is generally less restrictive than typical communication vs computation cost limitations.  Running with many elements per MPI rank is even better! though this is not the common case.  The other main advantage of OpenMP is the ability to share data, but Nek5000 has [almost] no shared state, so its not particularly relevant.  </div><div><br></div><div>The matrix multiplies are handled by compiled code that unrolls the "k" index.  See:</div><div><a href="https://github.com/Nek5000/Nek5000/blob/master/mxm_std.f">https://github.com/Nek5000/Nek5000/blob/master/mxm_std.f</a><br></div><div>The matrices are generally too small for MKL: the overhead, from argument checking for example, wipes out any gain from better instructions.  There is current work on integrating with LIBXSMM, which provides better performance in flop-bound cases.</div><div><br></div><div>Hope that helps,</div><div>Max</div></div><br><div class="gmail_quote"><div dir="ltr">On Mon, Feb 1, 2016 at 8:20 AM <<a href="mailto:nek5000-users@lists.mcs.anl.gov">nek5000-users@lists.mcs.anl.gov</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Dear Nek5000 developpers and users,<br>
<br>
my name is Lars Haupt and I'am writing my phd-thesis at the moment, which has something to do with scalable p-multigrid based approaches. Therefore i have to understand the state of the art multigrid solver Nek5000 and thats why i'am trying to get some insides into Nek5000 parallelism.<br>
<br>
I read the article about the scalability of the Nek5000 Code which was achieved on the Juelich Supercomputer in 2010.<br>
I thought that the impressive strong scaling speedup was a result of an optimised hybrid parallelization strategy (MPI and OpenMP).<br>
<br>
But the general info on the Nek5000 website says that only MPI does the parallel job. Which means, domain decomposition is the only kind of parallelism?<br>
What happens with the huge amount of nodes inside one element? The FAQ tells something about high efficient matrix-matrix multiplications. Which are implemented using MKL-BLAS 3 dgemm routines, i guess?<br>
If that is the case, does Nek5000 use any OpenMP based parallelism inside MKL or why not?<br>
<br>
Many thanks in advance<br>
<br>
Lars Haupt<br>
<br>
Dipl.-Math. Lars Haupt<br>
Wissenschaftlicher Mitarbeiter<br>
<br>
Technische Universität Dresden<br>
Fakultät Maschinenwesen<br>
Institut für Energietechnik<br>
Professur für Gebäudeenergietechnik und Wärmeversorgung<br>
01062 Dresden<br>
Tel.: +49(351) 463-37619<br>
Fax.: +49(351) 463-37076<br>
E-Mail: <a href="mailto:lars.haupt@tu-dresden.de" target="_blank">lars.haupt@tu-dresden.de</a><br>
<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
Nek5000-users mailing list<br>
<a href="mailto:Nek5000-users@lists.mcs.anl.gov" target="_blank">Nek5000-users@lists.mcs.anl.gov</a><br>
<a href="https://lists.mcs.anl.gov/mailman/listinfo/nek5000-users" rel="noreferrer" target="_blank">https://lists.mcs.anl.gov/mailman/listinfo/nek5000-users</a><br>
</blockquote></div>