[gmx-developers] build configurations and binary file suffixes

Erik Lindahl erik.lindahl at gmail.com
Fri Mar 6 14:20:18 CET 2020

Hi Eric,

The fundamental challenge we need to solve first is how to handle the
fundamentally incompatible different hardware architectures smoothly, i.e.
how to support e.g. both CUDA, SYCL, HIP and all the various SIMD flavours.
That will require some fairly major changes both to library design and
CMake, and in particular likely rely on dynamic binding with multiple

Being able to have both precisions and e.g. MPI in the same library are
more of convenience features compared to that (but far from trivial; in
some cases you cannot execute an MPI binary outside of a queue), and I
don't think that's any at least the Stockholm team will have any resources
to focus on that part right now.



On Fri, Mar 6, 2020 at 1:13 PM Eric Irrgang <ericirrgang at gmail.com> wrote:

> Hi Devs,
> There has been some discussion in the past about potentially making a
> fatter libgromacs or other binaries to provide support for multiple
> architectures in a single binary. I think this was mostly in reference to
> different SIMD architecture intrinsics, but maybe also things like floating
> point precision or MPI flavor.
> Is there an issue tracking the discussion or a link to any related road
> map?
> There may be two separate discussions here (or more), but my real question
> regards the future of resolving the correct sets of binaries and choices
> for FP precision and MPI flavor.
> Some thoughts:
> * We can and should do more to distinguish binary incompatibilities
> through some combination of namespacing and templating. For instance, there
> are several cases of public structures whose size depends on the definition
> of "real" but whose symbols are indistinguishable. It would make sense to
> update these to use a template parameter (e.g. "Scalar").
> * The "gmx" command line wrapper could take optional flags to dispatch
> fp-precision and MPI flavor. For backwards compatibility, the suffixed
> versions can be retained as hard links or basic wrappers to the main binary.
> * Important compatibility aspects like precision and MPI flavor can be
> enforced with COMPATIBLE_INTERFACE_* properties on the CMake library
> targets and pre-checked with COMPONENTS arguments to find_package().
> I would like to link to or introduce further discussion at
> https://redmine.gromacs.org/issues/3152 but I wanted to poll for initial
> background or feedback here first.
> Best,
> M. Eric Irrgang
> --
> 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.

Erik Lindahl <erik.lindahl at dbb.su.se>
Professor of Biophysics, Dept. Biochemistry & Biophysics, Stockholm
Science for Life Laboratory, Box 1031, 17121 Solna, Sweden
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://maillist.sys.kth.se/pipermail/gromacs.org_gmx-developers/attachments/20200306/1a20b335/attachment.html>

More information about the gromacs.org_gmx-developers mailing list