X-Git-Url: http://biod.pnpi.spb.ru/gitweb/?a=blobdiff_plain;f=src%2Fprograms%2Fmdrun%2Fpme_loadbal.c;h=dd2cd1a2e9f049b01ff6de90078d249f925c0cf7;hb=19d3c2e5d0c401eb59010960d11a18b6ba2c54c6;hp=d6fd68f37269d10692d625172706519c053c2cf3;hpb=a349e4beffcbe43be945226384d2a590b27263f0;p=alexxy%2Fgromacs.git diff --git a/src/programs/mdrun/pme_loadbal.c b/src/programs/mdrun/pme_loadbal.c index d6fd68f372..dd2cd1a2e9 100644 --- a/src/programs/mdrun/pme_loadbal.c +++ b/src/programs/mdrun/pme_loadbal.c @@ -32,23 +32,27 @@ * 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 "gromacs/utility/smalloc.h" -#include "types/commrec.h" -#include "network.h" -#include "calcgrid.h" -#include "pme.h" -#include "vec.h" -#include "domdec.h" -#include "nbnxn_cuda_data_mgmt.h" -#include "force.h" -#include "macros.h" -#include "md_logging.h" #include "pme_loadbal.h" +#include "config.h" + +#include "gromacs/legacyheaders/calcgrid.h" +#include "gromacs/legacyheaders/domdec.h" +#include "gromacs/legacyheaders/force.h" +#include "gromacs/legacyheaders/macros.h" +#include "gromacs/legacyheaders/md_logging.h" +#include "gromacs/legacyheaders/network.h" +#include "gromacs/legacyheaders/pme.h" +#include "gromacs/legacyheaders/sim_util.h" +#include "gromacs/legacyheaders/types/commrec.h" +#include "gromacs/math/vec.h" +#include "gromacs/mdlib/nbnxn_cuda/nbnxn_cuda_data_mgmt.h" +#include "gromacs/pbcutil/pbc.h" +#include "gromacs/utility/cstringutil.h" +#include "gromacs/utility/smalloc.h" + /* Parameters and setting for one PP-PME setup */ typedef struct { real rcut_coulomb; /* Coulomb cut-off */ @@ -436,17 +440,17 @@ static void switch_to_stage1(pme_load_balancing_t pme_lb) pme_lb->cur = pme_lb->start - 1; } -gmx_bool pme_load_balance(pme_load_balancing_t pme_lb, - t_commrec *cr, - FILE *fp_err, - FILE *fp_log, - t_inputrec *ir, - t_state *state, - double cycles, - interaction_const_t *ic, - nonbonded_verlet_t *nbv, - gmx_pme_t *pmedata, - gmx_int64_t step) +gmx_bool pme_load_balance(pme_load_balancing_t pme_lb, + t_commrec *cr, + FILE *fp_err, + FILE *fp_log, + t_inputrec *ir, + t_state *state, + double cycles, + interaction_const_t *ic, + struct nonbonded_verlet_t *nbv, + gmx_pme_t *pmedata, + gmx_int64_t step) { gmx_bool OK; pme_setup_t *set; @@ -698,30 +702,26 @@ gmx_bool pme_load_balance(pme_load_balancing_t pme_lb, } bUsesSimpleTables = uses_simple_tables(ir->cutoff_scheme, nbv, 0); - if (pme_lb->cutoff_scheme == ecutsVERLET && - nbv->grp[0].kernel_type == nbnxnk8x8x8_CUDA) - { - nbnxn_cuda_pme_loadbal_update_param(nbv->cu_nbv, ic); - - /* With tMPI + GPUs some ranks may be sharing GPU(s) and therefore - * also sharing texture references. To keep the code simple, we don't - * treat texture references as shared resources, but this means that - * the coulomb_tab texture ref will get updated by multiple threads. - * Hence, to ensure that the non-bonded kernels don't start before all - * texture binding operations are finished, we need to wait for all ranks - * to arrive here before continuing. - * - * Note that we could omit this barrier if GPUs are not shared (or - * texture objects are used), but as this is initialization code, there - * is not point in complicating things. - */ + nbnxn_cuda_pme_loadbal_update_param(nbv, ic); + + /* With tMPI + GPUs some ranks may be sharing GPU(s) and therefore + * also sharing texture references. To keep the code simple, we don't + * treat texture references as shared resources, but this means that + * the coulomb_tab texture ref will get updated by multiple threads. + * Hence, to ensure that the non-bonded kernels don't start before all + * texture binding operations are finished, we need to wait for all ranks + * to arrive here before continuing. + * + * Note that we could omit this barrier if GPUs are not shared (or + * texture objects are used), but as this is initialization code, there + * is not point in complicating things. + */ #ifdef GMX_THREAD_MPI - if (PAR(cr)) - { - gmx_barrier(cr); - } -#endif /* GMX_THREAD_MPI */ + if (PAR(cr) && use_GPU(nbv)) + { + gmx_barrier(cr); } +#endif /* GMX_THREAD_MPI */ /* Usually we won't need the simple tables with GPUs. * But we do with hybrid acceleration and with free energy.