[AMBER-Developers] GTI merge into master branch

From: Darrin Y <darrinmyork.gmail.com>
Date: Wed, 24 Jan 2018 11:48:23 -0500

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), test_cuda_serial.sh 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

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     : Darrin.York.rutgers.edu
   of New Jersey                  :    fax:     +1-732-445-4320
174 Frelinghuysen Road            :    phone:   +1-848-445-5199
Piscataway, NJ 08854   USA        :    http://theory.rutgers.edu
AMBER-Developers mailing list
Received on Wed Jan 24 2018 - 09:00:03 PST
Custom Search