Gromacs  2018.8
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Functions | Variables
#include "gmxpre.h"
#include "config.h"
#include <stdio.h>
#include <cstring>
#include "gromacs/domdec/domdec_struct.h"
#include "gromacs/ewald/pme.h"
#include "gromacs/gmxlib/network.h"
#include "gromacs/math/vec.h"
#include "gromacs/mdlib/gmx_omp_nthreads.h"
#include "gromacs/mdtypes/commrec.h"
#include "gromacs/mdtypes/forceoutput.h"
#include "gromacs/mdtypes/interaction_const.h"
#include "gromacs/mdtypes/md_enums.h"
#include "gromacs/utility/fatalerror.h"
#include "gromacs/utility/gmxmpi.h"
#include "gromacs/utility/smalloc.h"
#include "pme-internal.h"
#include "pme-pp-communication.h"
+ Include dependency graph for pme-pp.cpp:

Description

This file contains function definitions necessary for managing the offload of long-ranged PME work to separate MPI rank, for computing energies and forces (Coulomb and LJ).

Author
Berk Hess hess@.nosp@m.kth..nosp@m.se

Functions

static void gmx_pme_send_coeffs_coords_wait (gmx_domdec_t *dd)
 Wait for the pending data send requests to PME ranks to complete.
 
static void gmx_pme_send_coeffs_coords (t_commrec *cr, unsigned int flags, real *chargeA, real *chargeB, real *c6A, real *c6B, real *sigmaA, real *sigmaB, matrix box, rvec *x, real lambda_q, real lambda_lj, int maxshift_x, int maxshift_y, gmx_int64_t step)
 Send data to PME ranks.
 
void gmx_pme_send_parameters (t_commrec *cr, const interaction_const_t *ic, gmx_bool bFreeEnergy_q, gmx_bool bFreeEnergy_lj, real *chargeA, real *chargeB, real *sqrt_c6A, real *sqrt_c6B, real *sigmaA, real *sigmaB, int maxshift_x, int maxshift_y)
 Send the charges and maxshift to out PME-only node.
 
void gmx_pme_send_coordinates (t_commrec *cr, matrix box, rvec *x, real lambda_q, real lambda_lj, gmx_bool bEnerVir, gmx_int64_t step)
 Send the coordinates to our PME-only node and request a PME calculation.
 
void gmx_pme_send_finish (t_commrec *cr)
 Tell our PME-only node to finish.
 
void gmx_pme_send_switchgrid (t_commrec *cr, ivec grid_size, real ewaldcoeff_q, real ewaldcoeff_lj)
 Tell our PME-only node to switch to a new grid size.
 
void gmx_pme_send_resetcounters (t_commrec *cr, gmx_int64_t step)
 Tell our PME-only node to reset all cycle and flop counters.
 
static void receive_virial_energy (t_commrec *cr, gmx::ForceWithVirial *forceWithVirial, real *energy_q, real *energy_lj, real *dvdlambda_q, real *dvdlambda_lj, float *pme_cycles)
 Receive virial and energy from PME rank.
 
void gmx_pme_receive_f (t_commrec *cr, gmx::ForceWithVirial *forceWithVirial, real *energy_q, real *energy_lj, real *dvdlambda_q, real *dvdlambda_lj, float *pme_cycles)
 PP nodes receive the long range forces from the PME nodes.
 

Variables

static constexpr bool c_useDelayedWait = false
 Block to wait for communication to PME ranks to complete. More...
 

Variable Documentation

constexpr bool c_useDelayedWait = false
static

Block to wait for communication to PME ranks to complete.

This should be faster with a real non-blocking MPI implementation