[gmx-developers] Difference between kernels

Szilárd Páll pall.szilard at gmail.com
Tue Nov 1 15:16:32 CET 2016

Hi Millad,

On Tue, Nov 1, 2016 at 12:00 AM, Millad Ghane <mghane at cs.uh.edu> wrote:
> Hi all,
> I have two questions regarding the kernels:
> 1- What is the difference between 4x4 and 8x8x8 kernels?
>        (Does 4x4 means a 4 by 4 square of 16 particles and 8x8x8 means an 8
> by 8 by 8 cube of 512 particles?)

NxM means that the kernels compute NxM non-bonded interactions between
a group of N and M particles in the inner loop (1x1 being the
traditional verlet list algorithm).

Have you checked out the publicaitons on the topic?
DOI: 10.1016/j.cpc.2013.06.003
DOI: 10.1016/j.softx.2015.06.001

> 2- What is the difference between PlainC and GPU/SIMD codes?

The target, "PlainC" is for reference, the GPU and CPU SIMD kernels
are for performance.

> I got that
> plainC codes are focusing on running the computations on merely CPUs.

Not only, see above.

> But,
> my question revolves around the fact that GPU/SIMD versions have some extra
> kernels that I do not see in the plainC versions (like
> nbnxn_kernel_ElecRF_VdwLJ_F_ref, nbnxn_kernel_ElecRF_VdwLJFsw_F_ref, ...).

Those are the SIMD reference kernels (as the corresponding header
briefly notes, docs are indeed sparse) and implement the same SIMD
operations as the arch-specific kernels that use intrinsics, but
instead with with C[++] code. These are mainly intended for testing,
but if you want to run on an unsupported architecture, they'll be
faster than the plain C kernels.

>         In other terms, my question is: is the output and functionality of
> plainC versions equivalent to non-plainC version? What is the difference
> between plainC and non-plainC versions of the kernel?

Output: same. The functionality has been covered above, I guess.

The main functional difference is performance, but it depends what you
want to accomplish.


> I would really appreciate it if you help me on these questions.
> Best Regards,
> Millad
> --
> Gromacs Developers mailing list
> * Please search the archive at
> http://www.gromacs.org/Support/Mailing_Lists/GMX-developers_List before
> posting!
> * Can't post? Read http://www.gromacs.org/Support/Mailing_Lists
> * For (un)subscribe requests visit
> https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-developers or
> send a mail to gmx-developers-request at gromacs.org.

More information about the gromacs.org_gmx-developers mailing list