[gmx-developers] Using C++ with Gromacs

Peter Eastman peastman at stanford.edu
Thu May 8 22:25:17 CEST 2008


Success!  After far too many hours, I finally came up with the  
following mystical incantation which convinces automake to compile my  
file to its own library, then link it with mdrun:

noinst_LTLIBRARIES += libopenmminterface.la
libopenmminterface_la_SOURCES = md_openmm.cpp
mdrun_LINK = $(CXXLINK)

I know, written out that way it looks so innocuous.  How difficult  
could that possibly be? :)  You don't want to know how many hours when  
into that last line.  I still haven't managed to get it to produce a  
dynamic library, but I'll worry about that later.

On May 8, 2008, at 12:07 AM, Erik Lindahl wrote:

> Nothing wrong with that (we have different target audiences), but  
> for Gromacs portability means we compile out-of-the-box using  
> combinations like portland compilers and UNICOS (Cray XT4), 5-year- 
> old versions of IBM XLC on AIX (since that might be compiler your  
> local supercomputing center has a supported MPI version for), IRIX,  
> HP aC on Itanium, whatever special BLAS/LAPACK libraries the vendor  
> provides, etc.

Very true.  As in all such things, it's just a matter of your  
requirements.  You pick what platforms you need to support, and that  
limits what technologies you can use.  I'm happy to say, "We only  
support gcc 4.x and Visual Studio 2005," but you obviously have  
different requirements.

> However, this does _not_ mean we shouldn't do much more object  
> oriented interfaces and data abstraction in Gromacs (we're working  
> on that, but there's a lot of old code to clean up), it's just that  
> we'll need to accomplish it with handles rather than formal classes,  
> and forego some of the more advanced c++ stuff.

It's also good to remember that "using C++" can mean many different  
things.  After all, C++ is a superset of C, so strictly speak, every C  
program *is* a C++ program.  C++ then adds a lot of features, some of  
which are more problematic than others.  There are even a few features  
that started out in C++ and later got added to C (like the const  
keyword).  My impression is that if you even just stay away from  
templates and multiple inheritance, that alone will do a lot to reduce  
the compatibility issues.

Anyway, many thanks to everyone for your time and assistance.  I  
really appreciate it!  Hopefully we'll have something good to show in  
the not too distant future.

Peter



More information about the gromacs.org_gmx-developers mailing list