[gmx-developers] Use of SVE in GROMACS

Berk Hess hess at kth.se
Fri Oct 9 11:29:26 CEST 2020

On 2020-10-09 11:20, Szilárd Páll wrote:
> On Wed, Oct 7, 2020 at 4:28 PM Guido Giuntoli <guido.giuntoli at huawei.com> wrote:
>> The non-bonded benchmark you suggested looks very convenient, as I can understand it correctly it does not require any data IO and the initial conditions of the problem are generated using the command line parameters, is that correct?
> Correct.
>> With this benchmark I see most of the computing time in nbnxm_kernel_ElecEw_VdwLJCombGeom_F_4xm which calls kernel_outer.h and this last to kernel_inner.h. The idea of implementing this through includes is for avoiding function call overhead?
> We generate a large number of branching-free flavors of the nonbonded
> kernels and separating the source inner / outer loops helps code
> generation using the preprocessor by introducing modularity.
Includes instead of function calls are to avoid function call overhead 
and long argument lists. It would be nicer to do this using templating, 
but then we need to be 100% sure that the compiler inlines the code.

We would also like to template the outer loop, but preprocessing allows 
conditional declaration of variables, which templating does not.

> Cheers,
> --
> Szilárd

More information about the gromacs.org_gmx-developers mailing list