|
static void | print_ddzone (FILE *fp, int d, int i, int j, gmx_ddzone_t *zone) |
| Debug helper printing a DD zone.
|
|
static void | dd_move_cellx (gmx_domdec_t *dd, const gmx_ddbox_t *ddbox, rvec cell_ns_x0, rvec cell_ns_x1) |
| Using the home grid size as input in cell_ns_x0 and cell_ns_x1 takes the extremes over all home and remote zones in the halo and returns the results in cell_ns_x0 and cell_ns_x1. Note: only used with the group cut-off scheme.
|
|
static void | set_zones_ncg_home (gmx_domdec_t *dd) |
| Sets the charge-group zones to be equal to the home zone.
|
|
static void | restoreAtomGroups (gmx_domdec_t *dd, const int *gcgs_index, const t_state *state) |
| Restore atom groups for the charge groups.
|
|
static void | dd_set_cginfo (gmx::ArrayRef< const int > index_gl, int cg0, int cg1, t_forcerec *fr, char *bLocalCG) |
| Sets the cginfo structures.
|
|
static void | make_dd_indices (gmx_domdec_t *dd, const int *gcgs_index, int cg_start) |
| Makes the mappings between global and local atom indices during DD repartioning.
|
|
static int | check_bLocalCG (gmx_domdec_t *dd, int ncg_sys, const char *bLocalCG, const char *where) |
| Checks the charge-group assignements.
|
|
static void | check_index_consistency (gmx_domdec_t *dd, int natoms_sys, int ncg_sys, const char *where) |
| Checks whether global and local atom indices are consistent.
|
|
static void | clearDDStateIndices (gmx_domdec_t *dd, int atomGroupStart, int atomStart) |
| Clear all DD global state indices, starting from atomGroupStart and atomStart .
|
|
bool | check_grid_jump (int64_t step, const gmx_domdec_t *dd, real cutoff, const gmx_ddbox_t *ddbox, gmx_bool bFatal) |
| Check whether the DD grid has moved too far for correctness.
|
|
static float | dd_force_load (gmx_domdec_comm_t *comm) |
| Return the duration of force calculations on this rank.
|
|
static void | comm_dd_ns_cell_sizes (gmx_domdec_t *dd, gmx_ddbox_t *ddbox, rvec cell_ns_x0, rvec cell_ns_x1, int64_t step) |
| Runs cell size checks and communicates the boundaries.
|
|
static void | get_load_distribution (gmx_domdec_t *dd, gmx_wallcycle_t wcycle) |
| Compute and communicate to determine the load distribution across PP ranks.
|
|
static float | dd_force_load_fraction (gmx_domdec_t *dd) |
| Return the relative performance loss on the total run time due to the force calculation load imbalance.
|
|
static float | dd_force_imb_perf_loss (gmx_domdec_t *dd) |
| Return the relative performance loss on the total run time due to the force calculation load imbalance.
|
|
static void | print_dd_load_av (FILE *fplog, gmx_domdec_t *dd) |
| Print load-balance report e.g. at the end of a run.
|
|
static float | dd_vol_min (gmx_domdec_t *dd) |
| Return the minimum communication volume.
|
|
static int | dd_load_flags (gmx_domdec_t *dd) |
| Return the DD load flags.
|
|
static float | dd_f_imbal (gmx_domdec_t *dd) |
| Return the reported load imbalance in force calculations.
|
|
static std::string | dd_print_load (gmx_domdec_t *dd, int64_t step) |
| Returns DD load balance report.
|
|
static void | dd_print_load_verbose (gmx_domdec_t *dd) |
| Prints DD load balance report in mdrun verbose mode.
|
|
static void | turn_on_dlb (const gmx::MDLogger &mdlog, gmx_domdec_t *dd, int64_t step) |
| Turns on dynamic load balancing if possible and needed.
|
|
static void | turn_off_dlb (const gmx::MDLogger &mdlog, gmx_domdec_t *dd, int64_t step) |
| Turns off dynamic load balancing (but leave it able to turn back on).
|
|
static void | turn_off_dlb_forever (const gmx::MDLogger &mdlog, gmx_domdec_t *dd, int64_t step) |
| Turns off dynamic load balancing permanently.
|
|
void | set_dd_dlb_max_cutoff (t_commrec *cr, real cutoff) |
| Limit DLB to preserve the option of returning to the current cut-off. More...
|
|
static void | merge_cg_buffers (int ncell, gmx_domdec_comm_dim_t *cd, int pulse, int *ncg_cell, gmx::ArrayRef< int > index_gl, const int *recv_i, rvec *cg_cm, rvec *recv_vr, gmx::ArrayRef< int > cgindex, cginfo_mb_t *cginfo_mb, int *cginfo) |
| Merges charge-group buffers.
|
|
static void | make_cell2at_index (gmx_domdec_comm_dim_t *cd, int nzone, int atomGroupStart, const gmx::RangePartitioning &atomGroups) |
| Makes a range partitioning for the atom groups wthin a cell.
|
|
static gmx_bool | missing_link (t_blocka *link, int cg_gl, const char *bLocalCG) |
| Returns whether a link is missing.
|
|
static void | set_dd_corners (const gmx_domdec_t *dd, int dim0, int dim1, int dim2, gmx_bool bDistMB, dd_corners_t *c) |
| Determine the corners of the domain(s) we are communicating with.
|
|
static void | get_zone_pulse_cgs (gmx_domdec_t *dd, int zonei, int zone, int cg0, int cg1, gmx::ArrayRef< const int > globalAtomGroupIndices, const gmx::RangePartitioning &atomGroups, int dim, int dim_ind, int dim0, int dim1, int dim2, real r_comm2, real r_bcomm2, matrix box, bool distanceIsTriclinic, rvec *normal, real skew_fac2_d, real skew_fac_01, rvec *v_d, rvec *v_0, rvec *v_1, const dd_corners_t *c, const rvec sf2_round, gmx_bool bDistBonded, gmx_bool bBondComm, gmx_bool bDist2B, gmx_bool bDistMB, rvec *cg_cm, const int *cginfo, std::vector< int > *localAtomGroups, dd_comm_setup_work_t *work) |
| Add the atom groups we need to send in this pulse from this zone to localAtomGroups and work .
|
|
static void | clearCommSetupData (dd_comm_setup_work_t *work) |
| Clear data.
|
|
static void | setup_dd_communication (gmx_domdec_t *dd, matrix box, gmx_ddbox_t *ddbox, t_forcerec *fr, t_state *state, PaddedVector< gmx::RVec > *f) |
| Prepare DD communication.
|
|
static void | set_cg_boundaries (gmx_domdec_zones_t *zones) |
| Set boundaries for the charge group range.
|
|
static void | set_zones_size (gmx_domdec_t *dd, matrix box, const gmx_ddbox_t *ddbox, int zone_start, int zone_end, int numMovedChargeGroupsInHomeZone) |
| Set zone dimensions for zones zone_start to zone_end-1 . More...
|
|
static bool | comp_cgsort (const gmx_cgsort_t &a, const gmx_cgsort_t &b) |
| Comparator for sorting charge groups.
|
|
template<typename T > |
static void | orderVector (gmx::ArrayRef< const gmx_cgsort_t > sort, gmx::ArrayRef< T > dataToSort, gmx::ArrayRef< T > sortBuffer) |
| Order data in dataToSort according to sort . More...
|
|
template<typename T > |
static void | orderVector (gmx::ArrayRef< const gmx_cgsort_t > sort, gmx::ArrayRef< T > vectorToSort, std::vector< T > *workVector) |
| Order data in dataToSort according to sort . More...
|
|
static void | order_vec_atom (const gmx::RangePartitioning *atomGroups, gmx::ArrayRef< const gmx_cgsort_t > sort, gmx::ArrayRef< gmx::RVec > v, gmx::ArrayRef< gmx::RVec > buf) |
| Order vectors of atoms.
|
|
static bool | compareCgsort (const gmx_cgsort_t &a, const gmx_cgsort_t &b) |
| Returns whether a < b */.
|
|
static void | orderedSort (gmx::ArrayRef< const gmx_cgsort_t > stationary, gmx::ArrayRef< gmx_cgsort_t > moved, std::vector< gmx_cgsort_t > *sort1) |
| Do sorting of charge groups.
|
|
static void | dd_sort_order (const gmx_domdec_t *dd, const t_forcerec *fr, int ncg_home_old, gmx_domdec_sort_t *sort) |
| Set the sorting order for systems with charge groups, returned in sort->sort. More...
|
|
static void | dd_sort_order_nbnxn (const t_forcerec *fr, std::vector< gmx_cgsort_t > *sort) |
| Returns the sorting order for atoms based on the nbnxn grid order in sort.
|
|
static void | dd_sort_state (gmx_domdec_t *dd, rvec *cgcm, t_forcerec *fr, t_state *state, int ncg_home_old) |
| Returns the sorting state for DD.
|
|
static void | add_dd_statistics (gmx_domdec_t *dd) |
| Accumulates load statistics.
|
|
void | reset_dd_statistics_counters (gmx_domdec_t *dd) |
| Reset all the statistics and counters for total run counting.
|
|
void | print_dd_statistics (const t_commrec *cr, const t_inputrec *ir, FILE *fplog) |
| Print statistics for domain decomposition communication.
|
|
void | dd_partition_system (FILE *fplog, const gmx::MDLogger &mdlog, int64_t step, const t_commrec *cr, gmx_bool bMasterState, int nstglobalcomm, t_state *state_global, const gmx_mtop_t *top_global, const t_inputrec *ir, t_state *state_local, PaddedVector< gmx::RVec > *f, gmx::MDAtoms *mdAtoms, gmx_localtop_t *top_local, t_forcerec *fr, gmx_vsite_t *vsite, gmx::Constraints *constr, t_nrnb *nrnb, gmx_wallcycle *wcycle, gmx_bool bVerbose) |
| Partition the system over the nodes. More...
|
|
void | checkNumberOfBondedInteractions (const gmx::MDLogger &mdlog, t_commrec *cr, int totalNumberOfBondedInteractions, const gmx_mtop_t *top_global, const gmx_localtop_t *top_local, const t_state *state, bool *shouldCheckNumberOfBondedInteractions) |
| Check whether bonded interactions are missing, if appropriate. More...
|
|