[gmx-developers] Making libgromacs a dynamic loadable object
erik.lindahl at scilifelab.se
Sun Sep 29 10:32:13 CEST 2013
I think this is unlikely to make it for 5.0, but long-term I would like to support multiple hardware accelerations in a single binary again, by making the actual binaries very small and loading one of several libraries as a dynamic module at runtime. This is not technically difficult to do, but there is one step that will be a little pain for us: Each symbol we want to use from the library must be resolved manually with a call to dlsym().
This means we should start thinking of two things to make life simpler in the future:
1) Decide on what level we want the interface between library and executables, and keep this interface _really_ small (in the sense that we want to resolve as few symbols as possible).
2) Since we will have to compile the high-level binaries with generic compiler flags, any code that is performance-sensitive should go in the architecture-specific optimized library.
Mark: Considering (2), we might for instance prefer to move the main md loop to a library function.
Obviously, we could also use an extra library or two for architecture-specific code in programs/tools/testutils, but that might be uglier?
More information about the gromacs.org_gmx-developers