X-Git-Url: http://biod.pnpi.spb.ru/gitweb/?a=blobdiff_plain;f=src%2Fprograms%2Fmdrun%2Fmd.cpp;fp=src%2Fprograms%2Fmdrun%2Fmd.c;h=0504150c008e23e09337d2774f24662f049a6474;hb=19d3c2e5d0c401eb59010960d11a18b6ba2c54c6;hp=3d98d597c7d0e9c009e02d816e631b3f36846a25;hpb=a349e4beffcbe43be945226384d2a590b27263f0;p=alexxy%2Fgromacs.git diff --git a/src/programs/mdrun/md.c b/src/programs/mdrun/md.cpp similarity index 97% rename from src/programs/mdrun/md.c rename to src/programs/mdrun/md.cpp index 3d98d597c7..0504150c00 100644 --- a/src/programs/mdrun/md.c +++ b/src/programs/mdrun/md.cpp @@ -34,67 +34,67 @@ * To help us fund GROMACS development, we humbly ask that you cite * the research papers on the package. Check out http://www.gromacs.org. */ -#ifdef HAVE_CONFIG_H -#include -#endif +#include "gmxpre.h" -#include "typedefs.h" -#include "gromacs/utility/smalloc.h" -#include "sysstuff.h" -#include "vec.h" -#include "vcm.h" -#include "mdebin.h" -#include "nrnb.h" -#include "calcmu.h" -#include "index.h" -#include "vsite.h" -#include "update.h" -#include "ns.h" -#include "mdrun.h" -#include "md_support.h" -#include "md_logging.h" -#include "network.h" -#include "xvgr.h" -#include "physics.h" -#include "names.h" -#include "force.h" -#include "disre.h" -#include "orires.h" -#include "pme.h" -#include "mdatoms.h" -#include "repl_ex.h" -#include "deform.h" -#include "qmmm.h" -#include "domdec.h" -#include "domdec_network.h" -#include "gromacs/gmxlib/topsort.h" -#include "coulomb.h" -#include "constr.h" -#include "shellfc.h" -#include "gromacs/gmxpreprocess/compute_io.h" -#include "checkpoint.h" -#include "mtop_util.h" -#include "sighandler.h" -#include "txtdump.h" -#include "gromacs/utility/cstringutil.h" -#include "pme_loadbal.h" -#include "bondf.h" -#include "membed.h" -#include "types/nlistheuristics.h" -#include "types/iteratedconstraints.h" -#include "nbnxn_cuda_data_mgmt.h" +#include "config.h" + +#include -#include "gromacs/utility/gmxmpi.h" #include "gromacs/fileio/confio.h" +#include "gromacs/fileio/mdoutf.h" #include "gromacs/fileio/trajectory_writing.h" #include "gromacs/fileio/trnio.h" #include "gromacs/fileio/trxio.h" #include "gromacs/fileio/xtcio.h" -#include "gromacs/timing/wallcycle.h" -#include "gromacs/timing/walltime_accounting.h" +#include "gromacs/gmxpreprocess/compute_io.h" +#include "gromacs/imd/imd.h" +#include "gromacs/legacyheaders/bonded-threading.h" +#include "gromacs/legacyheaders/calcmu.h" +#include "gromacs/legacyheaders/checkpoint.h" +#include "gromacs/legacyheaders/constr.h" +#include "gromacs/legacyheaders/coulomb.h" +#include "gromacs/legacyheaders/disre.h" +#include "gromacs/legacyheaders/domdec.h" +#include "gromacs/legacyheaders/domdec_network.h" +#include "gromacs/legacyheaders/force.h" +#include "gromacs/legacyheaders/md_logging.h" +#include "gromacs/legacyheaders/md_support.h" +#include "gromacs/legacyheaders/mdatoms.h" +#include "gromacs/legacyheaders/mdebin.h" +#include "gromacs/legacyheaders/mdrun.h" +#include "gromacs/legacyheaders/names.h" +#include "gromacs/legacyheaders/network.h" +#include "gromacs/legacyheaders/nrnb.h" +#include "gromacs/legacyheaders/ns.h" +#include "gromacs/legacyheaders/orires.h" +#include "gromacs/legacyheaders/pme.h" +#include "gromacs/legacyheaders/qmmm.h" +#include "gromacs/legacyheaders/shellfc.h" +#include "gromacs/legacyheaders/sighandler.h" +#include "gromacs/legacyheaders/txtdump.h" +#include "gromacs/legacyheaders/typedefs.h" +#include "gromacs/legacyheaders/update.h" +#include "gromacs/legacyheaders/vcm.h" +#include "gromacs/legacyheaders/vsite.h" +#include "gromacs/legacyheaders/types/iteratedconstraints.h" +#include "gromacs/legacyheaders/types/nlistheuristics.h" +#include "gromacs/math/vec.h" +#include "gromacs/mdlib/nbnxn_cuda/nbnxn_cuda_data_mgmt.h" +#include "gromacs/pbcutil/mshift.h" +#include "gromacs/pbcutil/pbc.h" #include "gromacs/pulling/pull.h" #include "gromacs/swap/swapcoords.h" -#include "gromacs/imd/imd.h" +#include "gromacs/timing/wallcycle.h" +#include "gromacs/timing/walltime_accounting.h" +#include "gromacs/topology/mtop_util.h" +#include "gromacs/utility/cstringutil.h" +#include "gromacs/utility/gmxmpi.h" +#include "gromacs/utility/smalloc.h" + +#include "deform.h" +#include "membed.h" +#include "pme_loadbal.h" +#include "repl_ex.h" #ifdef GMX_FAHCORE #include "corewrap.h" @@ -105,7 +105,7 @@ static void reset_all_counters(FILE *fplog, t_commrec *cr, gmx_int64_t *step_rel, t_inputrec *ir, gmx_wallcycle_t wcycle, t_nrnb *nrnb, gmx_walltime_accounting_t walltime_accounting, - nbnxn_cuda_ptr_t cu_nbv) + struct nonbonded_verlet_t *nbv) { char sbuf[STEPSTRSIZE]; @@ -113,10 +113,7 @@ static void reset_all_counters(FILE *fplog, t_commrec *cr, md_print_warn(cr, fplog, "step %s: resetting all time and cycle counters\n", gmx_step_str(step, sbuf)); - if (cu_nbv) - { - nbnxn_cuda_reset_timings(cu_nbv); - } + nbnxn_cuda_reset_timings(nbv); wallcycle_stop(wcycle, ewcRUN); wallcycle_reset_all(wcycle); @@ -170,7 +167,7 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], rvec mu_tot; t_vcm *vcm; t_state *bufstate = NULL; - matrix *scale_tot, pcoupl_mu, M, ebox; + matrix pcoupl_mu, M; gmx_nlheur_t nlh; t_trxframe rerun_fr; gmx_repl_ex_t repl_ex = NULL; @@ -189,10 +186,8 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], gmx_ekindata_t *ekind, *ekind_save; gmx_shellfc_t shellfc; int count, nconverged = 0; - real timestep = 0; - double tcount = 0; - gmx_bool bConverged = TRUE, bOK, bSumEkinhOld, bDoReplEx, bExchanged, bNeedRepartition; - gmx_bool bAppend; + double tcount = 0; + gmx_bool bConverged = TRUE, bSumEkinhOld, bDoReplEx, bExchanged, bNeedRepartition; gmx_bool bResetCountersHalfMaxH = FALSE; gmx_bool bVV, bIterativeCase, bFirstIterate, bTemp, bPres, bTrotter; gmx_bool bUpdateDoLR; @@ -207,7 +202,6 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], double cycles; real saved_conserved_quantity = 0; real last_ekin = 0; - int iter_i; t_extmass MassQ; int **trotter_seq; char sbuf[STEPSTRSIZE], sbuf2[STEPSTRSIZE]; @@ -231,7 +225,6 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], /* Check for special mdrun options */ bRerunMD = (Flags & MD_RERUN); - bAppend = (Flags & MD_APPENDFILES); if (Flags & MD_RESETCOUNTERSHALFWAY) { if (ir->nsteps > 0) @@ -483,7 +476,7 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], */ if ((Flags & MD_TUNEPME) && EEL_PME(fr->eeltype) && - ( (fr->cutoff_scheme == ecutsVERLET && fr->nbv->bUseGPU) || !(cr->duty & DUTY_PME)) && + ( use_GPU(fr->nbv) || !(cr->duty & DUTY_PME)) && !bRerunMD) { pme_loadbal_init(&pme_loadbal, ir, state->box, fr->ic, fr->pmedata); @@ -726,9 +719,7 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], bStateFromTPX = !bStateFromCP; bInitStep = bFirstStep && (bStateFromTPX || bVV); bStartingFromCpt = (Flags & MD_STARTFROMCPT) && bInitStep; - bLastStep = FALSE; bSumEkinhOld = FALSE; - bDoReplEx = FALSE; bExchanged = FALSE; bNeedRepartition = FALSE; @@ -737,10 +728,7 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], step = ir->init_step; step_rel = 0; - if (ir->nstlist == -1) - { - init_nlistheuristics(&nlh, bGStatEveryStep, step); - } + init_nlistheuristics(&nlh, bGStatEveryStep, step); if (MULTISIM(cr) && (repl_ex_nst <= 0 )) { @@ -1161,7 +1149,6 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], } } - bOK = TRUE; if (!bRerunMD || rerun_fr.bV || bForceUpdate) /* Why is rerun_fr.bV here? Unclear. */ { wallcycle_stop(wcycle, ewcUPDATE); @@ -1177,12 +1164,6 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], /* Correct the virial for multiple time stepping */ m_sub(shake_vir, fr->vir_twin_constr, shake_vir); } - - if (!bOK) - { - gmx_fatal(FARGS, "Constraint error: Shake, Lincs or Settle could not solve the constrains"); - } - } else if (graph) { @@ -1483,7 +1464,6 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], */ copy_mat(state->box, lastbox); - bOK = TRUE; dvdl_constr = 0; if (!(bRerunMD && !rerun_fr.bV && !bForceUpdate)) @@ -1593,15 +1573,7 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], FALSE, bCalcVir, state->veta); } - if (!bOK) - { - gmx_fatal(FARGS, "Constraint error: Shake, Lincs or Settle could not solve the constrains"); - } - if (fr->bSepDVDL && fplog && do_log) - { - gmx_print_sepdvdl(fplog, "Constraint dV/dl", 0.0, dvdl_constr); - } if (bVV) { /* this factor or 2 correction is necessary @@ -1910,7 +1882,7 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], dd_bcast(cr->dd, sizeof(gmx_bool), &bPMETuneRunning); if (bPMETuneRunning && - fr->nbv->bUseGPU && DOMAINDECOMP(cr) && + use_GPU(fr->nbv) && DOMAINDECOMP(cr) && !(cr->duty & DUTY_PME)) { /* Lock DLB=auto to off (does nothing when DLB=yes/no). @@ -1974,7 +1946,7 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], { /* Reset all the counters related to performance over the run */ reset_all_counters(fplog, cr, step, &step_rel, ir, wcycle, nrnb, walltime_accounting, - fr->nbv != NULL && fr->nbv->bUseGPU ? fr->nbv->cu_nbv : NULL); + use_GPU(fr->nbv) ? fr->nbv : NULL); wcycle_set_reset_counters(wcycle, -1); if (!(cr->duty & DUTY_PME)) { @@ -2033,7 +2005,7 @@ double do_md(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], if (pme_loadbal != NULL) { pme_loadbal_done(pme_loadbal, cr, fplog, - fr->nbv != NULL && fr->nbv->bUseGPU); + use_GPU(fr->nbv)); } if (shellfc && fplog)