Re: [AMBER] REMD with pressure coupling

From: Chris Neale <candrewn.gmail.com>
Date: Thu, 22 Dec 2016 10:43:17 -0700

Thank you Feng!

Am I correct that (a) this module is not compatible with pmemd and
therefore that (b) it's going to be a lot slower on GPUs than running pmemd?

Thanks again,
Chris.

On Thu, Dec 22, 2016 at 9:35 AM, Feng Pan <fpan3.ncsu.edu> wrote:

> Hi, Chris
>
> You can try the &bbmd module for sander.MPI.
>
> The &bbmd is for ABMD with T-REMD and H-REMD. But you can run only T-REMD
> by setting the mode='ANALYSIS'. Basically the T-REMD here use
> different code from the -rem=1 one, so it should work with NPT ensemble. To
> be honest, I don't know if the results will be valid but it is worth
> trying.
>
> you can check the details of &bbmd here http://ambermd.org/doc12/nfe.pdf
> in
> section 22.6.5
>
> Best
> Feng Pan
>
> On Wed, Dec 21, 2016 at 1:09 AM, Neale, Christopher Andrew <
> cneale.lanl.gov>
> wrote:
>
> > Dear developers:
> >
> > I have finished including PV work in the T-REMD exchange criterion in
> > amber16. I still have an open question about PBC changing too much and
> the
> > fact that "The GPU code does not automatically reorganize grid cells",
> and
> > I'll update this thread if any issues pop up. Note that I did not enable
> > pressure coupling Hamiltonian exchange and I completely turned off 2D
> REMD
> > so that I didn't have to worry about passing the other variables around,
> > but if you're interested in allowing pressure coupling with REMD then
> this
> > code probably represents a plausible start.
> >
> > I made modifications to the following files:
> > src/pmemd/src/mdin_ctrl_dat.F90
> > src/pmemd/src/runmd.F90
> > src/pmemd/src/remd_exchg.F90
> > src/pmemd/src/cuda/gpu.cpp
> >
> >
> > $ diff amber16/src/pmemd/src/mdin_ctrl_dat.F90
> > amber16_pressremdPROPER/src/pmemd/src/mdin_ctrl_dat.F90
> > 2152,2157c2152,2157
> > < if (ntp .gt. 0) then
> > <
> > < write(mdout, '(a,a)') error_hdr, 'REMD cannot be run with ntp >
> 0!'
> > < inerr = 1
> > <
> > < end if
> > ---
> > > ! if (ntp .gt. 0) then
> > > !
> > > ! write(mdout, '(a,a)') error_hdr, 'REMD cannot be run with ntp >
> > 0!'
> > > ! inerr = 1
> > > !
> > > ! end if
> >
> >
> >
> >
> > $ diff amber16/src/pmemd/src/runmd.F90 amber16_pressremdPROPER/src/
> > pmemd/src/runmd.F90
> > 895c895,896
> > < si(si_kin_ene) / fac(1),
> > print_exch_data, &
> > ---
> > > si(si_kin_ene) / fac(1), pres0, &
> > > si(si_volume), print_exch_data, &
> >
> >
> >
> >
> >
> > $ diff amber16/src/pmemd/src/remd_exchg.F90 amber16_pressremdPROPER/src/
> > pmemd/src/remd_exchg.F90
> > 68c68,69
> > < use pmemd_lib_mod, only : strip
> > ---
> > > use pmemd_lib_mod, only : strip,mexit
> > >
> > 158,159c159,162
> > < call temperature_exchange(atm_cnt, vel, remd_ptot, my_dim,
> > remd_size, &
> > < actual_temperature, .true., mdloop)
> > ---
> > > write(mdout, '(/,a)') ' PV for 2D-REMD not implemented. Exiting.'
> > > call mexit(mdout, 1)
> > > !call temperature_exchange(atm_cnt, vel, remd_ptot, my_dim,
> > remd_size, &
> > > ! actual_temperature, .true., mdloop)
> > 314a318
> > > actual_pressure, actual_volume, &
> > 330a335,336
> > > double precision, intent(in) :: actual_pressure
> > > double precision, intent(in) :: actual_volume
> > 340a347,348
> > > double precision :: real_pres
> > > double precision :: real_vol
> > 347c355
> > < integer, parameter :: SIZE_EXCHANGE_DATA = 6 ! for mpi_gather
> > ---
> > > integer, parameter :: SIZE_EXCHANGE_DATA = 8 ! for mpi_gather
> > 354a363
> > > double precision :: pressurevolumedelta
> > 392a402,403
> > > my_exch_data%real_pres = actual_pressure
> > > my_exch_data%real_vol = actual_volume
> > 460a472,480
> > > ! * 0.0602214 / 4184 converts units to kcal/mol
> > > pressurevolumedelta = &
> > > (((ONEKB / my_exch_data%temp0) * &
> > > my_exch_data%real_pres) - &
> > > ((ONEKB / exch_data_tbl(neighbor_rank+1)%temp0) * &
> > > exch_data_tbl(neighbor_rank+1)%real_pres)) * &
> > > (my_exch_data%real_vol - exch_data_tbl(neighbor_rank+1)
> %real_vol)
> > * &
> > > 0.0602214 / 4184.0
> > >
> > 465c485,486
> > < (my_exch_data%temp0 * exch_data_tbl(neighbor_rank+1)
> > %temp0)
> > ---
> > > (my_exch_data%temp0 * exch_data_tbl(neighbor_rank+1)
> %temp0)
> > &
> > > - pressurevolumedelta
> > 485,487c506,515
> > < write(mdout,'(a8,E16.6,a8,E16.6,a12,f10.2)') &
> > < "Metrop= ",metrop," delta= ",delta," o_scaling= ", &
> > < 1 / my_exch_data%scaling
> > ---
> > > write(mdout,'(a8,E16.6,a8,E16.6,a8,E16.6,a5,E16.6,a5,E16.6,
> > a5,E16.6,a5,E16.6,a5,E16.6,a5,E16.6,a12,f10.2)') &
> > > "Metrop= ",metrop," delta= ",delta, &
> > > " pvwrk= ", pressurevolumedelta, &
> > > " T1= ", my_exch_data%temp0, &
> > > " T2= ", exch_data_tbl(neighbor_rank+1)%temp0, &
> > > " P1= ", my_exch_data%real_pres, &
> > > " P2= ", exch_data_tbl(neighbor_rank+1)%real_pres, &
> > > " V1= ", my_exch_data%real_vol, &
> > > " V2= ", exch_data_tbl(neighbor_rank+1)%real_vol, &
> > > " o_scaling= ", 1 / my_exch_data%scaling
> >
> >
> >
> >
> >
> > $ diff amber16/src/pmemd/src/cuda/gpu.cpp amber16_pressremdPROPER/src/
> > pmemd/src/cuda/gpu.cpp
> > 6306,6325c6306,6325
> > < if (skin <= 0.5)
> > < {
> > < printf("ERROR: Calculation halted.");
> > < printf(" Periodic box dimensions have changed too much from
> > their initial values.\n");
> > < printf(" Your system density has likely changed by a large
> > amount, probably from\n");
> > < printf(" starting the simulation from a structure a long way
> > from equilibrium.\n");
> > < printf("\n");
> > < printf(" [Although this error can also occur if the simulation
> > has blown up for some reason]\n");
> > < printf("\n");
> > < printf(" The GPU code does not automatically reorganize grid
> > cells and thus you\n");
> > < printf(" will need to restart the calculation from the
> previous
> > restart file.\n");
> > < printf(" This will generate new grid cells and allow the
> > calculation to continue.\n");
> > < printf(" It may be necessary to repeat this restarting
> multiple
> > times if your system\n");
> > < printf(" is a long way from an equilibrated density.\n");
> > < printf("\n");
> > < printf(" Alternatively you can run with the CPU code until the
> > density has converged\n");
> > < printf(" and then switch back to the GPU code.\n");
> > < printf("\n");
> > < exit(-1);
> > < }
> > ---
> > > // if (skin <= 0.5)
> > > // {
> > > // printf("ERROR: Calculation halted.");
> > > // printf(" Periodic box dimensions have changed too much from
> > their initial values.\n");
> > > // printf(" Your system density has likely changed by a large
> > amount, probably from\n");
> > > // printf(" starting the simulation from a structure a long way
> > from equilibrium.\n");
> > > // printf("\n");
> > > // printf(" [Although this error can also occur if the
> > simulation has blown up for some reason]\n");
> > > // printf("\n");
> > > // printf(" The GPU code does not automatically reorganize grid
> > cells and thus you\n");
> > > // printf(" will need to restart the calculation from the
> > previous restart file.\n");
> > > // printf(" This will generate new grid cells and allow the
> > calculation to continue.\n");
> > > // printf(" It may be necessary to repeat this restarting
> > multiple times if your system\n");
> > > // printf(" is a long way from an equilibrated density.\n");
> > > // printf("\n");
> > > // printf(" Alternatively you can run with the CPU code until
> > the density has converged\n");
> > > // printf(" and then switch back to the GPU code.\n");
> > > // printf("\n");
> > > // exit(-1);
> > > // }
> > _______________________________________________
> > AMBER mailing list
> > AMBER.ambermd.org
> > http://lists.ambermd.org/mailman/listinfo/amber
> >
>
>
>
> --
> Feng Pan
> Ph.D. Candidate
> North Carolina State University
> Department of Physics
> Email: fpan3.ncsu.edu
> _______________________________________________
> AMBER mailing list
> AMBER.ambermd.org
> http://lists.ambermd.org/mailman/listinfo/amber
>
_______________________________________________
AMBER mailing list
AMBER.ambermd.org
http://lists.ambermd.org/mailman/listinfo/amber
Received on Thu Dec 22 2016 - 10:00:03 PST
Custom Search