Re: [AMBER-Developers] GTI merge into master branch

From: Jamie Smith <>
Date: Thu, 25 Jan 2018 08:20:15 +0000

Hello all,

just wanted to let you know, I have now added support for GTI to the CMake build system. The new PMEMD source files are now added to CMake, and the build works again. Also, it took some work (including finding and working around a previously undocumented bug in CMake's CUDA code), but you can now enable GTI with the "-DGTI=TRUE" option.

Happy building,

-----Original Message-----
From: Darrin Y []
Sent: Wednesday, January 24, 2018 8:48 AM
Subject: [AMBER-Developers] GTI merge into master branch

Hi everyone,

               We have merged our GPU-accelerated free energy code (GTI) into the master branch so that both GTI and AFE can share the same code base and be more easily compared.

The GTI method was published last year as a patch to AMBER 16:

Here are our latest updates and we would like to have feedback from all developers. To compile the master branch for GTI, simply ./configure with the "-gti" flag included.

A couple of noteworthy points about functionality that I hope the community finds useful include:

Co-existence of GTI and AFE methods in one code base (see details below).

For GTI code:

Compatibility with free energy methods:

   - TI including output for all softcore lambda derivatives
   - BAR & MBAR output

Compatibility with multiple ensembles:

   - NVE (including netfrc = 0 or 1 options to remove net force - although
   currently defaults are different for CPU and GPU)
   - NVT (both Benerdsen & Langevin: ntt=1 & 3)
   - NPT (both Berendsen & MC: barostat=1 & 2)

Compatibility with Kennie & Penfei's' 12-6-4 potentials (hopefully helps to resolve some of the discussion in recent threads):

   - MD
   - TI
   - BAR & MBAR

Compatibility with REMD:

   - HREMD between different lambda windows

*Major program changes—for cuda developers*

   1. *all (GTI & AFE)*

The cSim and gpuContext objects are now wrapped as base classes. All variable definitions and initializations are done in base_gpuCpntext.{h, cpp} and base_simulationConst.{h, cpp}.

   1. *Configured with –gti flag:*

   1. The current pmemd.cuda is compiled as a combination of several
   compiled cuda units. All units need to keep their own copy of cSim and
   that means ~10 copies of cSim are in the program at the same time and they
   need to share the GPU constant memory (64KB). *As a result, cSim is
   limited to size of ~5KB*. Furthermore, any change in cSim on the host
   needs to be passed to all copies of cSim’s on GPU.

With –gti configured, the cuda kernels are compiled as portable units and linked as one cuda unit—hence there is only one copy of cSim at runtime. *The cSim now has the size limit of ~64KB. *And copying cSim from host to GPU only needs to be done once. Hence, developers will be able to start putting much more things into cSim.

   1. The gpu context object is a local variable created in the heap space
   (gpu = new _gpuContext;). With –gti configured. It is now handled as a
   singleton object and can be accessed from anywhere by

“gpu = theGPUContext::GetPointer(); “

*Test results*

 We added 36 new test cases, including:

   - single Na+ ion (de-charging)
   - single ligand mutation in water box
   - single ligand mutation in protein environment
   - 12-6-4 test cases

All are with NVE, NVT, and NPT conditions, as well as copies of original AFE cases (see below). They are under ~test/cuda/gti

Here are DPFP test results on a Quadro P100.

*With -gti flag, i.e., using GTI *

With -gti turned on (i.e., configured with), gave:

   - 197 file comparisons passed
   - 8 file comparisons failed
   - 0 tests experienced errors

The “file comparison failed” are all AFE test cases. By examining the results, GTI and AFE delivers the same dV/dl values. However, AFE does not at this point seem to output softcore lambda derivatives (including the
baselines) like the CPU code does, and as a result GTI fails to pass these cases. We have added duplicated test cases that contain this output as part of GTI test cases. When NOT configured with the -gti flag, the new GTI test cases are ignored.

Please take a look at the “-gti” configured code and let us know of any
problems: especially with respect to proper compatibility with the AFE code
- for example, if we need to modify some parts so that the “#ifdef GTI” can effectively distinguish the AFE and the GTI implementations. At the moment, we find no problems - all AFE tests are passed when –gti is not configured.

We hope this merge helps us to be able to do more comprehensive side-by-side tests, and move forward together with the most stable, efficient, and robust implementation.

best wishes,
Taisung & Darrin

Laboratory for Biomolecular Simulation Research, Rutgers University

Darrin M. York : Henry Rutgers University Professor
                                  : Director, Cyberlearning
Center for Integrative Proteomics : Innovation & Research Center
   Research and Department of : Director, Laboratory for
   Chemistry & Chemical Biology : Biomolecular Simulation Research
Rutgers, the State University :
   of New Jersey : fax: +1-732-445-4320
174 Frelinghuysen Road : phone: +1-848-445-5199
Piscataway, NJ 08854 USA :
AMBER-Developers mailing list
AMBER-Developers mailing list
Received on Thu Jan 25 2018 - 00:30:02 PST
Custom Search