From b148b715cf635bc179cdaaafa34a7a5b02dfa080 Mon Sep 17 00:00:00 2001 From: Giovanni Bussi <giovanni.bussi@gmail.com> Date: Mon, 18 May 2015 19:55:41 +0200 Subject: [PATCH] updated gromacs 5.0 to 5.0.5 --- .../src/gromacs/CMakeLists.txt | 0 .../src/gromacs/CMakeLists.txt.preplumed | 0 .../src/gromacs/mdlib/force.c | 0 .../src/gromacs/mdlib/force.c.preplumed | 0 .../src/gromacs/mdlib/minimize.c | 0 .../src/gromacs/mdlib/minimize.c.preplumed | 0 .../src/programs/mdrun/md.c | 30 +++++++++++++------ .../src/programs/mdrun/md.c.preplumed | 30 +++++++++++++------ .../src/programs/mdrun/mdrun.cpp | 0 .../src/programs/mdrun/mdrun.cpp.preplumed | 0 .../src/programs/mdrun/repl_ex.c | 4 +-- .../src/programs/mdrun/repl_ex.c.preplumed | 4 +-- 12 files changed, 46 insertions(+), 22 deletions(-) rename patches/{gromacs-5.0.diff => gromacs-5.0.5.diff}/src/gromacs/CMakeLists.txt (100%) rename patches/{gromacs-5.0.diff => gromacs-5.0.5.diff}/src/gromacs/CMakeLists.txt.preplumed (100%) rename patches/{gromacs-5.0.diff => gromacs-5.0.5.diff}/src/gromacs/mdlib/force.c (100%) rename patches/{gromacs-5.0.diff => gromacs-5.0.5.diff}/src/gromacs/mdlib/force.c.preplumed (100%) rename patches/{gromacs-5.0.diff => gromacs-5.0.5.diff}/src/gromacs/mdlib/minimize.c (100%) rename patches/{gromacs-5.0.diff => gromacs-5.0.5.diff}/src/gromacs/mdlib/minimize.c.preplumed (100%) rename patches/{gromacs-5.0.diff => gromacs-5.0.5.diff}/src/programs/mdrun/md.c (98%) rename patches/{gromacs-5.0.diff => gromacs-5.0.5.diff}/src/programs/mdrun/md.c.preplumed (98%) rename patches/{gromacs-5.0.diff => gromacs-5.0.5.diff}/src/programs/mdrun/mdrun.cpp (100%) rename patches/{gromacs-5.0.diff => gromacs-5.0.5.diff}/src/programs/mdrun/mdrun.cpp.preplumed (100%) rename patches/{gromacs-5.0.diff => gromacs-5.0.5.diff}/src/programs/mdrun/repl_ex.c (99%) rename patches/{gromacs-5.0.diff => gromacs-5.0.5.diff}/src/programs/mdrun/repl_ex.c.preplumed (99%) diff --git a/patches/gromacs-5.0.diff/src/gromacs/CMakeLists.txt b/patches/gromacs-5.0.5.diff/src/gromacs/CMakeLists.txt similarity index 100% rename from patches/gromacs-5.0.diff/src/gromacs/CMakeLists.txt rename to patches/gromacs-5.0.5.diff/src/gromacs/CMakeLists.txt diff --git a/patches/gromacs-5.0.diff/src/gromacs/CMakeLists.txt.preplumed b/patches/gromacs-5.0.5.diff/src/gromacs/CMakeLists.txt.preplumed similarity index 100% rename from patches/gromacs-5.0.diff/src/gromacs/CMakeLists.txt.preplumed rename to patches/gromacs-5.0.5.diff/src/gromacs/CMakeLists.txt.preplumed diff --git a/patches/gromacs-5.0.diff/src/gromacs/mdlib/force.c b/patches/gromacs-5.0.5.diff/src/gromacs/mdlib/force.c similarity index 100% rename from patches/gromacs-5.0.diff/src/gromacs/mdlib/force.c rename to patches/gromacs-5.0.5.diff/src/gromacs/mdlib/force.c diff --git a/patches/gromacs-5.0.diff/src/gromacs/mdlib/force.c.preplumed b/patches/gromacs-5.0.5.diff/src/gromacs/mdlib/force.c.preplumed similarity index 100% rename from patches/gromacs-5.0.diff/src/gromacs/mdlib/force.c.preplumed rename to patches/gromacs-5.0.5.diff/src/gromacs/mdlib/force.c.preplumed diff --git a/patches/gromacs-5.0.diff/src/gromacs/mdlib/minimize.c b/patches/gromacs-5.0.5.diff/src/gromacs/mdlib/minimize.c similarity index 100% rename from patches/gromacs-5.0.diff/src/gromacs/mdlib/minimize.c rename to patches/gromacs-5.0.5.diff/src/gromacs/mdlib/minimize.c diff --git a/patches/gromacs-5.0.diff/src/gromacs/mdlib/minimize.c.preplumed b/patches/gromacs-5.0.5.diff/src/gromacs/mdlib/minimize.c.preplumed similarity index 100% rename from patches/gromacs-5.0.diff/src/gromacs/mdlib/minimize.c.preplumed rename to patches/gromacs-5.0.5.diff/src/gromacs/mdlib/minimize.c.preplumed diff --git a/patches/gromacs-5.0.diff/src/programs/mdrun/md.c b/patches/gromacs-5.0.5.diff/src/programs/mdrun/md.c similarity index 98% rename from patches/gromacs-5.0.diff/src/programs/mdrun/md.c rename to patches/gromacs-5.0.5.diff/src/programs/mdrun/md.c index b34d23c71..449bae0bd 100644 --- a/patches/gromacs-5.0.diff/src/programs/mdrun/md.c +++ b/patches/gromacs-5.0.5.diff/src/programs/mdrun/md.c @@ -3,7 +3,7 @@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2011,2012,2013,2014, by the GROMACS development team, led by + * Copyright (c) 2011,2012,2013,2014,2015, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -203,7 +203,8 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], gmx_bool bVV, bIterativeCase, bFirstIterate, bTemp, bPres, bTrotter; gmx_bool bUpdateDoLR; real dvdl_constr; - rvec *cbuf = NULL; + rvec *cbuf = NULL; + int cbuf_nalloc = 0; matrix lastbox; real veta_save, scalevir, tracevir; real vetanew = 0; @@ -259,10 +260,6 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], md-vv-avek uses averaged half step velocities for T-control (but full step ekin for P control) md uses averaged half step kinetic energies to determine temperature unless defined otherwise by GMX_EKIN_AVE_VEL; */ bVV = EI_VV(ir->eI); - if (bVV) /* to store the initial velocities while computing virial */ - { - snew(cbuf, top_global->natoms); - } /* all the iteratative cases - only if there are constraints */ bIterativeCase = ((IR_NPH_TROTTER(ir) || IR_NPT_TROTTER(ir)) && (constr) && (!bRerunMD)); gmx_iterate_init(&iterate, FALSE); /* The default value of iterate->bIterationActive is set to @@ -365,6 +362,11 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], gmx_fatal(FARGS, "Normal Mode analysis is not supported with virtual sites.\nIf you'd like to help with adding support, we have an open discussion at http://redmine.gromacs.org/issues/879\n"); } + if (bRerunMD && fr->cutoff_scheme == ecutsVERLET && ir->opts.ngener > 1 && fr->nbv && fr->nbv->bUseGPU) + { + gmx_fatal(FARGS, "The Verlet scheme on GPUs does not support energy groups, so your rerun should probably use a .tpr file without energy groups, or mdrun -nb auto"); + } + if (DEFORM(*ir)) { tMPI_Thread_mutex_lock(&deform_init_box_mutex); @@ -1183,6 +1185,8 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], if (bVV && !bStartingFromCpt && !bRerunMD) /* ############### START FIRST UPDATE HALF-STEP FOR VV METHODS############### */ { + rvec *vbuf = NULL; + wallcycle_start(wcycle, ewcUPDATE); if (ir->eI == eiVV && bInitStep) { @@ -1192,7 +1196,8 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], * revert back to the initial coordinates * so that the input is actually the initial step. */ - copy_rvecn(state->v, cbuf, 0, state->natoms); /* should make this better for parallelizing? */ + snew(vbuf, state->natoms); + copy_rvecn(state->v, vbuf, 0, state->natoms); /* should make this better for parallelizing? */ } else { @@ -1374,9 +1379,10 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], } } /* if it's the initial step, we performed this first step just to get the constraint virial */ - if (bInitStep && ir->eI == eiVV) + if (ir->eI == eiVV && bInitStep) { - copy_rvecn(cbuf, state->v, 0, state->natoms); + copy_rvecn(vbuf, state->v, 0, state->natoms); + sfree(vbuf); } wallcycle_stop(wcycle, ewcUPDATE); } @@ -1632,6 +1638,12 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], if (ir->eI == eiVVAK) { + /* We probably only need md->homenr, not state->natoms */ + if (state->natoms > cbuf_nalloc) + { + cbuf_nalloc = state->natoms; + srenew(cbuf, cbuf_nalloc); + } copy_rvecn(state->x, cbuf, 0, state->natoms); } bUpdateDoLR = (fr->bTwinRange && do_per_step(step, ir->nstcalclr)); diff --git a/patches/gromacs-5.0.diff/src/programs/mdrun/md.c.preplumed b/patches/gromacs-5.0.5.diff/src/programs/mdrun/md.c.preplumed similarity index 98% rename from patches/gromacs-5.0.diff/src/programs/mdrun/md.c.preplumed rename to patches/gromacs-5.0.5.diff/src/programs/mdrun/md.c.preplumed index 3d98d597c..73cc2103e 100644 --- a/patches/gromacs-5.0.diff/src/programs/mdrun/md.c.preplumed +++ b/patches/gromacs-5.0.5.diff/src/programs/mdrun/md.c.preplumed @@ -3,7 +3,7 @@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2011,2012,2013,2014, by the GROMACS development team, led by + * Copyright (c) 2011,2012,2013,2014,2015, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -197,7 +197,8 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], gmx_bool bVV, bIterativeCase, bFirstIterate, bTemp, bPres, bTrotter; gmx_bool bUpdateDoLR; real dvdl_constr; - rvec *cbuf = NULL; + rvec *cbuf = NULL; + int cbuf_nalloc = 0; matrix lastbox; real veta_save, scalevir, tracevir; real vetanew = 0; @@ -247,10 +248,6 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], md-vv-avek uses averaged half step velocities for T-control (but full step ekin for P control) md uses averaged half step kinetic energies to determine temperature unless defined otherwise by GMX_EKIN_AVE_VEL; */ bVV = EI_VV(ir->eI); - if (bVV) /* to store the initial velocities while computing virial */ - { - snew(cbuf, top_global->natoms); - } /* all the iteratative cases - only if there are constraints */ bIterativeCase = ((IR_NPH_TROTTER(ir) || IR_NPT_TROTTER(ir)) && (constr) && (!bRerunMD)); gmx_iterate_init(&iterate, FALSE); /* The default value of iterate->bIterationActive is set to @@ -353,6 +350,11 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], gmx_fatal(FARGS, "Normal Mode analysis is not supported with virtual sites.\nIf you'd like to help with adding support, we have an open discussion at http://redmine.gromacs.org/issues/879\n"); } + if (bRerunMD && fr->cutoff_scheme == ecutsVERLET && ir->opts.ngener > 1 && fr->nbv && fr->nbv->bUseGPU) + { + gmx_fatal(FARGS, "The Verlet scheme on GPUs does not support energy groups, so your rerun should probably use a .tpr file without energy groups, or mdrun -nb auto"); + } + if (DEFORM(*ir)) { tMPI_Thread_mutex_lock(&deform_init_box_mutex); @@ -1089,6 +1091,8 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], if (bVV && !bStartingFromCpt && !bRerunMD) /* ############### START FIRST UPDATE HALF-STEP FOR VV METHODS############### */ { + rvec *vbuf = NULL; + wallcycle_start(wcycle, ewcUPDATE); if (ir->eI == eiVV && bInitStep) { @@ -1098,7 +1102,8 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], * revert back to the initial coordinates * so that the input is actually the initial step. */ - copy_rvecn(state->v, cbuf, 0, state->natoms); /* should make this better for parallelizing? */ + snew(vbuf, state->natoms); + copy_rvecn(state->v, vbuf, 0, state->natoms); /* should make this better for parallelizing? */ } else { @@ -1280,9 +1285,10 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], } } /* if it's the initial step, we performed this first step just to get the constraint virial */ - if (bInitStep && ir->eI == eiVV) + if (ir->eI == eiVV && bInitStep) { - copy_rvecn(cbuf, state->v, 0, state->natoms); + copy_rvecn(vbuf, state->v, 0, state->natoms); + sfree(vbuf); } wallcycle_stop(wcycle, ewcUPDATE); } @@ -1538,6 +1544,12 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], if (ir->eI == eiVVAK) { + /* We probably only need md->homenr, not state->natoms */ + if (state->natoms > cbuf_nalloc) + { + cbuf_nalloc = state->natoms; + srenew(cbuf, cbuf_nalloc); + } copy_rvecn(state->x, cbuf, 0, state->natoms); } bUpdateDoLR = (fr->bTwinRange && do_per_step(step, ir->nstcalclr)); diff --git a/patches/gromacs-5.0.diff/src/programs/mdrun/mdrun.cpp b/patches/gromacs-5.0.5.diff/src/programs/mdrun/mdrun.cpp similarity index 100% rename from patches/gromacs-5.0.diff/src/programs/mdrun/mdrun.cpp rename to patches/gromacs-5.0.5.diff/src/programs/mdrun/mdrun.cpp diff --git a/patches/gromacs-5.0.diff/src/programs/mdrun/mdrun.cpp.preplumed b/patches/gromacs-5.0.5.diff/src/programs/mdrun/mdrun.cpp.preplumed similarity index 100% rename from patches/gromacs-5.0.diff/src/programs/mdrun/mdrun.cpp.preplumed rename to patches/gromacs-5.0.5.diff/src/programs/mdrun/mdrun.cpp.preplumed diff --git a/patches/gromacs-5.0.diff/src/programs/mdrun/repl_ex.c b/patches/gromacs-5.0.5.diff/src/programs/mdrun/repl_ex.c similarity index 99% rename from patches/gromacs-5.0.diff/src/programs/mdrun/repl_ex.c rename to patches/gromacs-5.0.5.diff/src/programs/mdrun/repl_ex.c index cfb0b7f35..af47b1d3b 100644 --- a/patches/gromacs-5.0.diff/src/programs/mdrun/repl_ex.c +++ b/patches/gromacs-5.0.5.diff/src/programs/mdrun/repl_ex.c @@ -3,7 +3,7 @@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2011,2012,2013,2014, by the GROMACS development team, led by + * Copyright (c) 2011,2012,2013,2014,2015, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -415,7 +415,7 @@ gmx_repl_ex_t init_replica_exchange(FILE *fplog, snew(re->order, re->nrepl); for (i = 0; i < re->nrepl; i++) { - snew(re->cyclic[i], re->nrepl); + snew(re->cyclic[i], re->nrepl+1); snew(re->order[i], re->nrepl); } /* allocate space for the functions storing the data for the replicas */ diff --git a/patches/gromacs-5.0.diff/src/programs/mdrun/repl_ex.c.preplumed b/patches/gromacs-5.0.5.diff/src/programs/mdrun/repl_ex.c.preplumed similarity index 99% rename from patches/gromacs-5.0.diff/src/programs/mdrun/repl_ex.c.preplumed rename to patches/gromacs-5.0.5.diff/src/programs/mdrun/repl_ex.c.preplumed index 46a9bc011..5db5d309c 100644 --- a/patches/gromacs-5.0.diff/src/programs/mdrun/repl_ex.c.preplumed +++ b/patches/gromacs-5.0.5.diff/src/programs/mdrun/repl_ex.c.preplumed @@ -3,7 +3,7 @@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2011,2012,2013,2014, by the GROMACS development team, led by + * Copyright (c) 2011,2012,2013,2014,2015, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -400,7 +400,7 @@ gmx_repl_ex_t init_replica_exchange(FILE *fplog, snew(re->order, re->nrepl); for (i = 0; i < re->nrepl; i++) { - snew(re->cyclic[i], re->nrepl); + snew(re->cyclic[i], re->nrepl+1); snew(re->order[i], re->nrepl); } /* allocate space for the functions storing the data for the replicas */ -- GitLab