From 54e7df7e1eb2021932aa79bafa9587fc32f1fae5 Mon Sep 17 00:00:00 2001 From: Szilard Pall Date: Tue, 13 Apr 2010 23:39:44 +0200 Subject: [PATCH] bugfix for do_md_openmm - was always pulling data from the GPU every step --- src/kernel/md_openmm.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/kernel/md_openmm.c b/src/kernel/md_openmm.c index 2f0376f292..74b937beca 100644 --- a/src/kernel/md_openmm.c +++ b/src/kernel/md_openmm.c @@ -185,7 +185,7 @@ double do_md_openmm(FILE *fplog,t_commrec *cr,int nfile,const t_filenm fnm[], bFirstStep,bStateFromTPX,bLastStep,bStartingFromCpt; bool bInitStep=TRUE; bool bNEMD,do_ene,do_log, do_verbose, - bX,bV,bF,bXTC,bCPT; + bX,bV,bF,bCPT; tensor force_vir,shake_vir,total_vir,pres; int i,m; int mdof_flags; @@ -464,23 +464,24 @@ double do_md_openmm(FILE *fplog,t_commrec *cr,int nfile,const t_filenm fnm[], if (do_per_step(step,ir->nstfout)) { mdof_flags |= MDOF_F; } if (do_per_step(step,ir->nstxtcout)) { mdof_flags |= MDOF_XTC; } if (bCPT) { mdof_flags |= MDOF_CPT; }; - bX = MDOF_X || (bLastStep && ir->nstxout); - bV = MDOF_V || (bLastStep && ir->nstvout); - bF = MDOF_F || (bLastStep && ir->nstfout); - bXTC = MDOF_XTC || (bLastStep && ir->nstxtcout); do_ene = do_per_step(step,ir->nstenergy) || (bLastStep && ir->nstenergy); - if( bX || bXTC || bV ){ + if(mdof_flags != 0) { + bX = (mdof_flags & (MDOF_X | MDOF_XTC | MDOF_CPT)); + bV = (mdof_flags & (MDOF_V | MDOF_CPT)); + + wallcycle_start(wcycle,ewcTRAJ); - openmm_copy_state(openmmData, state, &t, f, enerd, bX||bXTC, bV, 0, 0); + openmm_copy_state(openmmData, state, &t, f, enerd, bX, bV, 0, 0); wallcycle_stop(wcycle,ewcTRAJ); } openmm_take_one_step(openmmData); - if (bX || bV || bF || bXTC || do_ene) { + if (mdof_flags != 0 || do_ene) { wallcycle_start(wcycle,ewcTRAJ); - if( bF || do_ene ){ + bF = (mdof_flags & MDOF_F); + if(bF || do_ene ){ openmm_copy_state(openmmData, state, &t, f, enerd, 0, 0, bF, do_ene); } upd_mdebin(mdebin, NULL,TRUE, -- 2.11.4.GIT