#include "tmpi.h"
#endif
-#include "mpelogging.h"
/* The source code in this file should be thread-safe.
Please keep it that way. */
(void) MPI_Comm_size( MPI_COMM_WORLD, &mpi_num_nodes );
(void) MPI_Comm_rank( MPI_COMM_WORLD, &mpi_my_rank );
(void) MPI_Get_processor_name( mpi_hostname, &resultlen );
-
-
-#ifdef USE_MPE
- /* MPE logging routines. Get event IDs from MPE: */
- /* General events */
- ev_timestep1 = MPE_Log_get_event_number( );
- ev_timestep2 = MPE_Log_get_event_number( );
- ev_force_start = MPE_Log_get_event_number( );
- ev_force_finish = MPE_Log_get_event_number( );
- ev_do_fnbf_start = MPE_Log_get_event_number( );
- ev_do_fnbf_finish = MPE_Log_get_event_number( );
- ev_ns_start = MPE_Log_get_event_number( );
- ev_ns_finish = MPE_Log_get_event_number( );
- ev_calc_bonds_start = MPE_Log_get_event_number( );
- ev_calc_bonds_finish = MPE_Log_get_event_number( );
- ev_global_stat_start = MPE_Log_get_event_number( );
- ev_global_stat_finish = MPE_Log_get_event_number( );
- ev_virial_start = MPE_Log_get_event_number( );
- ev_virial_finish = MPE_Log_get_event_number( );
-
- /* Enforced rotation */
- ev_flexll_start = MPE_Log_get_event_number( );
- ev_flexll_finish = MPE_Log_get_event_number( );
- ev_add_rot_forces_start = MPE_Log_get_event_number( );
- ev_add_rot_forces_finish = MPE_Log_get_event_number( );
- ev_rotcycles_start = MPE_Log_get_event_number( );
- ev_rotcycles_finish = MPE_Log_get_event_number( );
- ev_forcecycles_start = MPE_Log_get_event_number( );
- ev_forcecycles_finish = MPE_Log_get_event_number( );
-
- /* Shift related events */
- ev_shift_start = MPE_Log_get_event_number( );
- ev_shift_finish = MPE_Log_get_event_number( );
- ev_unshift_start = MPE_Log_get_event_number( );
- ev_unshift_finish = MPE_Log_get_event_number( );
- ev_mk_mshift_start = MPE_Log_get_event_number( );
- ev_mk_mshift_finish = MPE_Log_get_event_number( );
-
- /* PME related events */
- ev_pme_start = MPE_Log_get_event_number( );
- ev_pme_finish = MPE_Log_get_event_number( );
- ev_spread_on_grid_start = MPE_Log_get_event_number( );
- ev_spread_on_grid_finish = MPE_Log_get_event_number( );
- ev_sum_qgrid_start = MPE_Log_get_event_number( );
- ev_sum_qgrid_finish = MPE_Log_get_event_number( );
- ev_gmxfft3d_start = MPE_Log_get_event_number( );
- ev_gmxfft3d_finish = MPE_Log_get_event_number( );
- ev_solve_pme_start = MPE_Log_get_event_number( );
- ev_solve_pme_finish = MPE_Log_get_event_number( );
- ev_gather_f_bsplines_start = MPE_Log_get_event_number( );
- ev_gather_f_bsplines_finish= MPE_Log_get_event_number( );
- ev_reduce_start = MPE_Log_get_event_number( );
- ev_reduce_finish = MPE_Log_get_event_number( );
- ev_rscatter_start = MPE_Log_get_event_number( );
- ev_rscatter_finish = MPE_Log_get_event_number( );
- ev_alltoall_start = MPE_Log_get_event_number( );
- ev_alltoall_finish = MPE_Log_get_event_number( );
- ev_pmeredist_start = MPE_Log_get_event_number( );
- ev_pmeredist_finish = MPE_Log_get_event_number( );
- ev_init_pme_start = MPE_Log_get_event_number( );
- ev_init_pme_finish = MPE_Log_get_event_number( );
- ev_send_coordinates_start = MPE_Log_get_event_number( );
- ev_send_coordinates_finish = MPE_Log_get_event_number( );
- ev_update_fr_start = MPE_Log_get_event_number( );
- ev_update_fr_finish = MPE_Log_get_event_number( );
- ev_clear_rvecs_start = MPE_Log_get_event_number( );
- ev_clear_rvecs_finish = MPE_Log_get_event_number( );
- ev_update_start = MPE_Log_get_event_number( );
- ev_update_finish = MPE_Log_get_event_number( );
- ev_output_start = MPE_Log_get_event_number( );
- ev_output_finish = MPE_Log_get_event_number( );
- ev_sum_lrforces_start = MPE_Log_get_event_number( );
- ev_sum_lrforces_finish = MPE_Log_get_event_number( );
- ev_sort_start = MPE_Log_get_event_number( );
- ev_sort_finish = MPE_Log_get_event_number( );
- ev_sum_qgrid_start = MPE_Log_get_event_number( );
- ev_sum_qgrid_finish = MPE_Log_get_event_number( );
-
- /* Essential dynamics related events */
- ev_edsam_start = MPE_Log_get_event_number( );
- ev_edsam_finish = MPE_Log_get_event_number( );
- ev_get_coords_start = MPE_Log_get_event_number( );
- ev_get_coords_finish = MPE_Log_get_event_number( );
- ev_ed_apply_cons_start = MPE_Log_get_event_number( );
- ev_ed_apply_cons_finish = MPE_Log_get_event_number( );
- ev_fit_to_reference_start = MPE_Log_get_event_number( );
- ev_fit_to_reference_finish = MPE_Log_get_event_number( );
-
- /* describe events: */
- if ( mpi_my_rank == 0 )
- {
- /* General events */
- MPE_Describe_state(ev_timestep1, ev_timestep2, "timestep START", "magenta" );
- MPE_Describe_state(ev_force_start, ev_force_finish, "force", "cornflower blue" );
- MPE_Describe_state(ev_do_fnbf_start, ev_do_fnbf_finish, "do_fnbf", "navy" );
- MPE_Describe_state(ev_ns_start, ev_ns_finish, "neighbor search", "tomato" );
- MPE_Describe_state(ev_calc_bonds_start, ev_calc_bonds_finish, "bonded forces", "slate blue" );
- MPE_Describe_state(ev_global_stat_start, ev_global_stat_finish, "global stat", "firebrick3");
- MPE_Describe_state(ev_update_fr_start, ev_update_fr_finish, "update forcerec", "goldenrod");
- MPE_Describe_state(ev_clear_rvecs_start, ev_clear_rvecs_finish, "clear rvecs", "bisque");
- MPE_Describe_state(ev_update_start, ev_update_finish, "update", "cornsilk");
- MPE_Describe_state(ev_output_start, ev_output_finish, "output", "black");
- MPE_Describe_state(ev_virial_start, ev_virial_finish, "calc_virial", "thistle4");
-
- /* Enforced rotation */
- MPE_Describe_state(ev_flexll_start, ev_flexll_finish, "flex lowlevel", "navajo white");
- MPE_Describe_state(ev_add_rot_forces_start, ev_add_rot_forces_finish, "add rot forces", "green");
- MPE_Describe_state(ev_rotcycles_start, ev_rotcycles_finish, "count rot cyc", "moccasin");
- MPE_Describe_state(ev_forcecycles_start, ev_forcecycles_finish, "count force cyc", "powder blue");
-
- /* PME related events */
- MPE_Describe_state(ev_pme_start, ev_pme_finish, "doing PME", "grey" );
- MPE_Describe_state(ev_spread_on_grid_start, ev_spread_on_grid_finish, "spread", "dark orange" );
- MPE_Describe_state(ev_sum_qgrid_start, ev_sum_qgrid_finish, "sum qgrid", "slate blue");
- MPE_Describe_state(ev_gmxfft3d_start, ev_gmxfft3d_finish, "fft3d", "snow2" );
- MPE_Describe_state(ev_solve_pme_start, ev_solve_pme_finish, "solve PME", "indian red" );
- MPE_Describe_state(ev_gather_f_bsplines_start, ev_gather_f_bsplines_finish, "bsplines", "light sea green" );
- MPE_Describe_state(ev_reduce_start, ev_reduce_finish, "reduce", "cyan1" );
- MPE_Describe_state(ev_rscatter_start, ev_rscatter_finish, "rscatter", "cyan3" );
- MPE_Describe_state(ev_alltoall_start, ev_alltoall_finish, "alltoall", "LightCyan4" );
- MPE_Describe_state(ev_pmeredist_start, ev_pmeredist_finish, "pmeredist", "thistle" );
- MPE_Describe_state(ev_init_pme_start, ev_init_pme_finish, "init PME", "snow4");
- MPE_Describe_state(ev_send_coordinates_start, ev_send_coordinates_finish, "send_coordinates","blue");
- MPE_Describe_state(ev_sum_lrforces_start, ev_sum_lrforces_finish, "sum_LRforces", "lime green");
- MPE_Describe_state(ev_sort_start, ev_sort_finish, "sort pme atoms", "brown");
- MPE_Describe_state(ev_sum_qgrid_start, ev_sum_qgrid_finish, "sum charge grid", "medium orchid");
-
- /* Shift related events */
- MPE_Describe_state(ev_shift_start, ev_shift_finish, "shift", "orange");
- MPE_Describe_state(ev_unshift_start, ev_unshift_finish, "unshift", "dark orange");
- MPE_Describe_state(ev_mk_mshift_start, ev_mk_mshift_finish, "mk_mshift", "maroon");
-
- /* Essential dynamics related events */
- MPE_Describe_state(ev_edsam_start, ev_edsam_finish, "EDSAM", "deep sky blue");
- MPE_Describe_state(ev_get_coords_start, ev_get_coords_finish, "ED get coords", "steel blue");
- MPE_Describe_state(ev_ed_apply_cons_start, ev_ed_apply_cons_finish, "ED apply constr", "forest green");
- MPE_Describe_state(ev_fit_to_reference_start, ev_fit_to_reference_finish, "ED fit to ref", "lavender");
-
- }
- MPE_Init_log();
-#endif
#ifdef GMX_LIB_MPI
fprintf(stderr,"NNODES=%d, MYRANK=%d, HOSTNAME=%s\n",
+++ /dev/null
-/*
- *
- * This source code is part of
- *
- * G R O M A C S
- *
- * GROningen MAchine for Chemical Simulations
- *
- * Written by David van der Spoel, Erik Lindahl, Berk Hess, and others.
- * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
- * Copyright (c) 2001-2008, The GROMACS development team,
- * check out http://www.gromacs.org for more information.
-
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * If you want to redistribute modifications, please consider that
- * scientific software is very special. Version control is crucial -
- * bugs must be traceable. We will be happy to consider code for
- * inclusion in the official distribution, but derived work must not
- * be called official GROMACS. Details are found in the README & COPYING
- * files - if they are missing, get the official version at www.gromacs.org.
- *
- * To help us fund GROMACS development, we humbly ask that you cite
- * the papers on the package - you can find them in the top README file.
- *
- * For more info, check our website at http://www.gromacs.org
- *
- * And Hey:
- * Gallium Rubidium Oxygen Manganese Argon Carbon Silicon
- */
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* define USE_MPE if you want MPE logging
- *
- * you then need to link with the appropriate libraries
- * that come with the mpich distribution (can be found in the
- * mpe subdirectory */
-/* #define USE_MPE */
-
-/* define BARRIERS if you want to have extra MPI_Barriers
- * in the code which might help analyzing the MPE logfiles
- */
-/* #define BARRIERS */
-#ifdef BARRIERS
-#define GMX_BARRIER(communicator) MPI_Barrier(communicator)
-#else
-#define GMX_BARRIER(communicator)
-#endif
-
-#ifdef USE_MPE
-#define GMX_MPE_LOG(event) MPE_Log_event(event, 0, "")
-#else
-#define GMX_MPE_LOG(event)
-#endif
-
-#ifdef USE_MPE
-#include <mpe.h>
- /* Define MPE logging events here */
- /* General events */
- int ev_timestep1, ev_timestep2;
- int ev_ns_start, ev_ns_finish;
- int ev_calc_bonds_start, ev_calc_bonds_finish;
- int ev_send_coordinates_start, ev_send_coordinates_finish;
- int ev_update_fr_start, ev_update_fr_finish;
- int ev_clear_rvecs_start, ev_clear_rvecs_finish;
- int ev_output_start, ev_output_finish;
- int ev_update_start, ev_update_finish;
- int ev_force_start, ev_force_finish;
- int ev_do_fnbf_start, ev_do_fnbf_finish;
- int ev_test_start, ev_test_finish;
-
- /* COM and enforced rotation pulling */
- int ev_flexll_start, ev_flexll_finish;
- int ev_add_rot_forces_start, ev_add_rot_forces_finish;
- int ev_forcecycles_start, ev_forcecycles_finish;
- int ev_rotcycles_start, ev_rotcycles_finish;
-
- /* Shift related events*/
- int ev_shift_start, ev_shift_finish;
- int ev_unshift_start, ev_unshift_finish;
- int ev_mk_mshift_start, ev_mk_mshift_finish;
-
- /* PME related events */
- int ev_pme_start, ev_pme_finish;
- int ev_spread_on_grid_start, ev_spread_on_grid_finish;
- int ev_sum_qgrid_start, ev_sum_qgrid_finish;
- int ev_gmxfft3d_start, ev_gmxfft3d_finish;
- int ev_solve_pme_start, ev_solve_pme_finish;
- int ev_gather_f_bsplines_start, ev_gather_f_bsplines_finish;
- int ev_reduce_start, ev_reduce_finish;
- int ev_rscatter_start, ev_rscatter_finish;
- int ev_alltoall_start, ev_alltoall_finish;
- int ev_pmeredist_start, ev_pmeredist_finish;
- int ev_init_pme_start, ev_init_pme_finish;
- int ev_global_stat_start, ev_global_stat_finish;
- int ev_sum_lrforces_start, ev_sum_lrforces_finish;
- int ev_virial_start, ev_virial_finish;
- int ev_sort_start, ev_sort_finish;
- int ev_sum_qgrid_start, ev_sum_qgrid_finish;
-
- /* Essential dynamics related events */
- int ev_edsam_start, ev_edsam_finish;
- int ev_get_group_x_start, ev_get_group_x_finish;
- int ev_ed_apply_cons_start, ev_ed_apply_cons_finish;
- int ev_fit_to_reference_start, ev_fit_to_reference_finish;
-#endif
-
-#ifdef __cplusplus
-}
-#endif
#include "sysstuff.h"
#include "macros.h"
#include "gmx_fatal.h"
-#include "mpelogging.h"
#include "physics.h"
#ifdef __cplusplus
{
/* memset(v[0],0,DIM*n*sizeof(v[0][0])); */
int i;
-
- GMX_MPE_LOG(ev_clear_rvecs_start);
for(i=0; (i<n); i++)
clear_rvec(v[i]);
-
- GMX_MPE_LOG(ev_clear_rvecs_finish);
}
static gmx_inline void clear_mat(matrix a)
#include "nrjac.h"
#include "mtop_util.h"
#include "edsam.h"
-#include "mpelogging.h"
#include "gmxfio.h"
#include "groupcoord.h"
struct t_fit_to_ref *loc;
- GMX_MPE_LOG(ev_fit_to_reference_start);
-
/* Allocate memory the first time this routine is called for each edi dataset */
if (NULL == edi->buf->fit_to_ref)
{
/* Determine the rotation matrix */
do_edfit(edi->sref.nr, edi->sref.x, loc->xcopy, rotmat, edi);
-
- GMX_MPE_LOG(ev_fit_to_reference_finish);
}
int tx,ty,tz;
- GMX_MPE_LOG(ev_unshift_start);
-
tx=is[XX];
ty=is[YY];
tz=is[ZZ];
xu[YY] = x[YY]-ty*box[YY][YY];
xu[ZZ] = x[ZZ]-tz*box[ZZ][ZZ];
}
-
- GMX_MPE_LOG(ev_unshift_finish);
}
int i;
- GMX_MPE_LOG(ev_ed_apply_cons_start);
-
/* subtract the average positions */
for (i=0; i<edi->sav.nr; i++)
rvec_dec(xcoll[i], edi->sav.x[i]);
/* add back the average positions */
for (i=0; i<edi->sav.nr; i++)
rvec_inc(xcoll[i], edi->sav.x[i]);
-
- GMX_MPE_LOG(ev_ed_apply_cons_finish);
}
if (!DOMAINDECOMP(cr) && PAR(cr) && MASTER(cr))
gmx_fatal(FARGS, "Please switch on domain decomposition to use essential dynamics in parallel.");
- GMX_MPE_LOG(ev_edsam_start);
-
if (MASTER(cr))
fprintf(stderr, "ED: Initializing essential dynamics constraints.\n");
* when the simulation has started */
if (ed->edo)
fflush(ed->edo);
-
- GMX_MPE_LOG(ev_edsam_finish);
}
} /* END of loop over ED datasets */
ed->bFirst = FALSE;
-
- GMX_MPE_LOG(ev_edsam_finish);
}
#include "domdec.h"
#include "partdec.h"
#include "qmmm.h"
-#include "mpelogging.h"
void ns(FILE *fp,
char *ptr;
int nsearch;
- GMX_MPE_LOG(ev_ns_start);
+
if (!fr->ns.nblist_initialized)
{
init_neighbor_list(fp, fr, md->homenr);
*/
if (fr->ns.dump_nl > 0)
dump_nblist(fp,cr,fr,fr->ns.dump_nl);
-
- GMX_MPE_LOG(ev_ns_finish);
}
void do_force_lowlevel(FILE *fplog, gmx_large_int_t step,
#define PRINT_SEPDVDL(s,v,dvdl) if (bSepDVDL) fprintf(fplog,sepdvdlformat,s,v,dvdl);
- GMX_MPE_LOG(ev_force_start);
+
set_pbc(&pbc,fr->ePBC,box);
/* Reset box */
}
/* Call the short range functions all in one go. */
- GMX_MPE_LOG(ev_do_fnbf_start);
dvdlambda = 0;
PRINT_SEPDVDL("VdW and Coulomb SR particle-p.",Vsr,dvdlambda);
debug_gmx();
- GMX_MPE_LOG(ev_do_fnbf_finish);
-
if (debug)
{
pr_rvecs(debug,0,"fshift after SR",fr->fshift,SHIFTS);
if (flags & GMX_FORCE_BONDED)
{
- GMX_MPE_LOG(ev_calc_bonds_start);
calc_bonds(fplog,cr->ms,
idef,x,hist,f,fr,&pbc,graph,enerd,nrnb,lambda,md,fcd,
DOMAINDECOMP(cr) ? cr->dd->gatindex : NULL, atype, born,
destroy_enerdata(&ed_lam);
}
debug_gmx();
- GMX_MPE_LOG(ev_calc_bonds_finish);
}
where();
pr_rvecs(debug,0,"fshift after bondeds",fr->fshift,SHIFTS);
}
- GMX_MPE_LOG(ev_force_finish);
-
}
void init_enerdata(int ngener,int n_flambda,gmx_enerdata_t *enerd)
#include "groupcoord.h"
-#include "mpelogging.h"
#include "network.h"
#include "pbc.h"
#include "vec.h"
int i,tx,ty,tz;
- GMX_MPE_LOG(ev_shift_start);
-
/* Loop over the group's atoms */
if(TRICLINIC(box))
{
x[i][ZZ]=x[i][ZZ]+tz*box[ZZ][ZZ];
}
}
- GMX_MPE_LOG(ev_shift_finish);
}
int i;
- GMX_MPE_LOG(ev_get_group_x_start);
-
/* Zero out the groups' global position array */
clear_rvecs(nr, xcoll);
copy_rvec(xcoll[i],xcoll_old[i]);
}
}
-
- GMX_MPE_LOG(ev_get_group_x_finish);
}
if (PAR(cr))
{
wallcycle_start(wcycle,ewcMoveE);
- GMX_MPE_LOG(ev_global_stat_start);
global_stat(fplog,gstat,cr,enerd,force_vir,shake_vir,mu_tot,
ir,ekind,constr,vcm,
gs != NULL ? eglsNR : 0,gs_buf,
top_global,state,
*bSumEkinhOld,flags);
- GMX_MPE_LOG(ev_global_stat_finish);
wallcycle_stop(wcycle,ewcMoveE);
}
if (gs != NULL)
#include "gmx_sse2_single.h"
#endif
-#include "mpelogging.h"
-
#define DFT_TOL 1e-7
/* #define PRT_FORCE */
/* conditions for on the fly time-measurement */
pme_calc_pidx(n_d,pme->recipbox,x_d,atc);
where();
- GMX_BARRIER(cr->mpi_comm_mygroup);
/* Redistribute x (only once) and qA or qB */
if (DOMAINDECOMP(cr)) {
dd_pmeredist_x_q(pme, n_d, q==0, x_d, q_d, atc);
{
wallcycle_start(wcycle,ewcPME_SPREADGATHER);
- /* Spread the charges on a grid */
- GMX_MPE_LOG(ev_spread_on_grid_start);
-
/* Spread the charges on a grid */
spread_on_grid(pme,&pme->atc[0],grid,q==0,TRUE);
- GMX_MPE_LOG(ev_spread_on_grid_finish);
if (q == 0)
{
/* sum contributions to local grid from other nodes */
#ifdef GMX_MPI
if (pme->nnodes > 1) {
- GMX_BARRIER(cr->mpi_comm_mygroup);
gmx_sum_qgrid_dd(pme,grid,GMX_SUM_QGRID_FORWARD);
where();
}
if (flags & GMX_PME_SOLVE)
{
/* do 3d-fft */
- GMX_BARRIER(cr->mpi_comm_mygroup);
- GMX_MPE_LOG(ev_gmxfft3d_start);
wallcycle_start(wcycle,ewcPME_FFT);
gmx_parallel_3dfft_execute(pfft_setup,GMX_FFT_REAL_TO_COMPLEX,fftgrid,cfftgrid);
wallcycle_stop(wcycle,ewcPME_FFT);
- GMX_MPE_LOG(ev_gmxfft3d_finish);
where();
/* solve in k-space for our local cells */
vol = det(box);
- GMX_BARRIER(cr->mpi_comm_mygroup);
- GMX_MPE_LOG(ev_solve_pme_start);
wallcycle_start(wcycle,ewcPME_SOLVE);
loop_count =
solve_pme_yzx(pme,cfftgrid,ewaldcoeff,vol,
&energy_AB[q],vir_AB[q]);
wallcycle_stop(wcycle,ewcPME_SOLVE);
where();
- GMX_MPE_LOG(ev_solve_pme_finish);
inc_nrnb(nrnb,eNR_SOLVEPME,loop_count);
}
{
/* do 3d-invfft */
- GMX_BARRIER(cr->mpi_comm_mygroup);
- GMX_MPE_LOG(ev_gmxfft3d_start);
where();
wallcycle_start(wcycle,ewcPME_FFT);
gmx_parallel_3dfft_execute(pfft_setup,GMX_FFT_COMPLEX_TO_REAL,cfftgrid,fftgrid);
wallcycle_stop(wcycle,ewcPME_FFT);
where();
- GMX_MPE_LOG(ev_gmxfft3d_finish);
if (pme->nodeid == 0)
{
/* distribute local grid to all nodes */
#ifdef GMX_MPI
if (pme->nnodes > 1) {
- GMX_BARRIER(cr->mpi_comm_mygroup);
gmx_sum_qgrid_dd(pme,grid,GMX_SUM_QGRID_BACKWARD);
}
#endif
if (flags & GMX_PME_CALC_F)
{
/* interpolate forces for our local atoms */
- GMX_BARRIER(cr->mpi_comm_mygroup);
- GMX_MPE_LOG(ev_gather_f_bsplines_start);
where();
gather_f_bsplines(pme,grid,bClearF,&pme->atc[0],
pme->bFEP ? (q==0 ? 1.0-lambda : lambda) : 1.0);
where();
-
- GMX_MPE_LOG(ev_gather_f_bsplines_finish);
-
+
inc_nrnb(nrnb,eNR_GATHERFBSP,
pme->pme_order*pme->pme_order*pme->pme_order*pme->atc[0].n);
wallcycle_stop(wcycle,ewcPME_SPREADGATHER);
n_d = pme->atc[d+1].n;
f_d = pme->atc[d+1].f;
}
- GMX_BARRIER(cr->mpi_comm_mygroup);
if (DOMAINDECOMP(cr)) {
dd_pmeredist_f(pme,atc,n_d,f_d,
d==pme->ndecompdim-1 && pme->bPPnode);
#include "tmpi.h"
#endif
-#include "mpelogging.h"
-
#define PP_PME_CHARGE (1<<0)
#define PP_PME_CHARGEB (1<<1)
#define PP_PME_COORD (1<<2)
#include "gmx_ga2la.h"
#include "xvgr.h"
#include "gmxfio.h"
-#include "mpelogging.h"
#include "groupcoord.h"
#include "pull_rotation.h"
#include "gmx_sort.h"
er=rot->enfrot;
- GMX_MPE_LOG(ev_add_rot_forces_start);
-
/* Loop over enforced rotation groups (usually 1, though)
* Apply the forces from rotation potentials */
for (g=0; g<rot->ngrp; g++)
PRINT_POT_TAU
- GMX_MPE_LOG(ev_add_rot_forces_finish);
-
return Vrot;
}
rvec_add(sum_n2, innersumvec, sum_n2);
- GMX_MPE_LOG(ev_inner_loop_finish);
-
/* Calculate the torque: */
if (bOutstepRot)
{
erg=rotg->enfrotgrp;
- GMX_MPE_LOG(ev_get_firstlast_start);
-
/* Find the first atom that needs to enter the calculation for each slab */
n = erg->slab_first; /* slab */
i = 0; /* start with the first atom */
/* Proceed to the next slab */
n--;
} while (n >= erg->slab_first);
-
- GMX_MPE_LOG(ev_get_firstlast_finish);
}
erg->slab_torque_v[l] = 0.0;
/* Call the rotational forces kernel */
- GMX_MPE_LOG(ev_flexll_start);
if (rotg->eType == erotgFLEX || rotg->eType == erotgFLEXT)
erg->V = do_flex_lowlevel(rotg, sigma, x, bOutstepRot, bOutstepSlab, box, cr);
else if (rotg->eType == erotgFLEX2 || rotg->eType == erotgFLEX2T)
erg->V = do_flex2_lowlevel(rotg, sigma, x, bOutstepRot, bOutstepSlab, box, cr);
else
gmx_fatal(FARGS, "Unknown flexible rotation type");
- GMX_MPE_LOG(ev_flexll_finish);
/* Determine angle by RMSD fit to the reference - Let's hope this */
/* only happens once in a while, since this is not parallelized! */
/**************************************************************************/
/* Done communicating, we can start to count cycles now ... */
wallcycle_start(wcycle, ewcROT);
- GMX_MPE_LOG(ev_rotcycles_start);
#ifdef TAKETIME
t0 = MPI_Wtime();
cycles_rot = wallcycle_stop(wcycle,ewcROT);
if (DOMAINDECOMP(cr) && wcycle)
dd_cycles_add(cr->dd,cycles_rot,ddCyclF);
- GMX_MPE_LOG(ev_rotcycles_finish);
}
#include "xtcio.h"
#include "copyrite.h"
#include "pull_rotation.h"
-#include "mpelogging.h"
#include "domdec.h"
#include "partdec.h"
#include "gmx_wallcycle.h"
*/
wallcycle_start(wcycle,ewcPP_PMESENDX);
- GMX_MPE_LOG(ev_send_coordinates_start);
bBS = (inputrec->nwall == 2);
if (bBS) {
mdatoms->nChargePerturbed,lambda,
( flags & GMX_FORCE_VIRIAL),step);
- GMX_MPE_LOG(ev_send_coordinates_finish);
wallcycle_stop(wcycle,ewcPP_PMESENDX);
}
#endif /* GMX_MPI */
* since that will interfere with the dynamic load balancing.
*/
wallcycle_start(wcycle,ewcFORCE);
- GMX_MPE_LOG(ev_forcecycles_start);
if (bDoForces)
{
if (flags & GMX_FORCE_VIRIAL)
{
fr->f_novirsum = fr->f_novirsum_alloc;
- GMX_BARRIER(cr->mpi_comm_mygroup);
if (fr->bDomDec)
{
clear_rvecs(fr->f_novirsum_n,fr->f_novirsum);
{
clear_rvecs(homenr,fr->f_novirsum+start);
}
- GMX_BARRIER(cr->mpi_comm_mygroup);
}
else
{
}
clear_rvec(fr->vir_diag_posres);
-
- GMX_BARRIER(cr->mpi_comm_mygroup);
}
if (inputrec->ePull == epullCONSTRAINT)
{
flags,&cycles_pme);
cycles_force = wallcycle_stop(wcycle,ewcFORCE);
- GMX_BARRIER(cr->mpi_comm_mygroup);
if (ed)
{
#include "mdatoms.h"
#include "repl_ex.h"
#include "qmmm.h"
-#include "mpelogging.h"
#include "domdec.h"
#include "partdec.h"
#include "topsort.h"
wallcycle_start(wcycle,ewcSTEP);
- GMX_MPE_LOG(ev_timestep1);
-
if (bRerunMD) {
if (rerun_fr.bStep) {
step = rerun_fr.step;
}
}
- GMX_MPE_LOG(ev_timestep2);
-
/* We write a checkpoint at this MD step when:
* either at an NS step when we signalled through gs,
* or at the last step (but not when we do not want confout),
fr,vsite,mu_tot,t,outf->fp_field,ed,bBornRadii,
(bNS ? GMX_FORCE_NS : 0) | force_flags);
}
-
- GMX_BARRIER(cr->mpi_comm_mygroup);
if (bTCR)
{
fprintf(fplog,sepdvdlformat,"Constraint",0.0,dvdl);
}
enerd->term[F_DHDL_CON] += dvdl;
-
- GMX_MPE_LOG(ev_timestep1);
}
/* MRS -- now done iterating -- compute the conserved quantity */
* the update.
* for RerunMD t is read from input trajectory
*/
- GMX_MPE_LOG(ev_output_start);
-
mdof_flags = 0;
if (do_per_step(step,ir->nstxout)) { mdof_flags |= MDOF_X; }
if (do_per_step(step,ir->nstvout)) { mdof_flags |= MDOF_V; }
}
wallcycle_stop(wcycle,ewcTRAJ);
}
- GMX_MPE_LOG(ev_output_finish);
/* kludge -- virial is lost with restart for NPT control. Must restart */
if (bStartingFromCpt && bVV)
so scroll down for that logic */
/* ######### START SECOND UPDATE STEP ################# */
- GMX_MPE_LOG(ev_update_start);
/* Box is changed in update() when we do pressure coupling,
* but we should still use the old box for energy corrections and when
* writing it to the energy file, so it matches the trajectory files for
/* Need to unshift here */
unshift_self(graph,state->box,state->x);
}
-
- GMX_BARRIER(cr->mpi_comm_mygroup);
- GMX_MPE_LOG(ev_update_finish);
if (vsite != NULL)
{
#include "pme.h"
#include "mdatoms.h"
#include "qmmm.h"
-#include "mpelogging.h"
#include "domdec.h"
#include "partdec.h"
#include "topsort.h"
{
wallcycle_start(wcycle,ewcSTEP);
- GMX_MPE_LOG(ev_timestep1);
-
bLastStep = (step_rel == ir->nsteps);
t = t0 + step*ir->delta_t;
}
clear_mat(force_vir);
- GMX_MPE_LOG(ev_timestep2);
/* We write a checkpoint at this MD step when:
* either when we signalled through gs (in OpenMM NS works different),
* the update.
* for RerunMD t is read from input trajectory
*/
- GMX_MPE_LOG(ev_output_start);
-
mdof_flags = 0;
if (do_per_step(step,ir->nstxout))
{
}
wallcycle_stop(wcycle,ewcTRAJ);
}
- GMX_MPE_LOG(ev_output_finish);
-
/* Determine the wallclock run time up till now */
run_time = gmx_gettime() - (double)runtime->real;
#include "mdatoms.h"
#include "repl_ex.h"
#include "qmmm.h"
-#include "mpelogging.h"
#include "domdec.h"
#include "partdec.h"
#include "coulomb.h"
wallcycle_start(wcycle,ewcSTEP);
- GMX_MPE_LOG(ev_timestep1);
-
if (bRerunMD) {
if (rerun_fr.bStep) {
step = rerun_fr.step;
}
}*/
- GMX_MPE_LOG(ev_timestep2);
-
/* We write a checkpoint at this MD step when:
* either at an NS step when we signalled through gs,
* or at the last step (but not when we do not want confout),
(bNS ? GMX_FORCE_NS : 0) | force_flags);
}
- GMX_BARRIER(cr->mpi_comm_mygroup);
-
- /* if (bTCR)
+/* if (bTCR)
{
mu_aver = calc_mu_aver(cr,state->x,mdatoms->chargeA,
mu_tot,&top_global->mols,mdatoms,gnx,grpindex);
fprintf(fplog,sepdvdlformat,"Constraint",0.0,dvdl);
}
enerd->term[F_DHDL_CON] += dvdl;
-
- GMX_MPE_LOG(ev_timestep1);
-
}
/* MRS -- now done iterating -- compute the conserved quantity */
* the update.
* for RerunMD t is read from input trajectory
*/
- GMX_MPE_LOG(ev_output_start);
-
mdof_flags = 0;
if (do_per_step(step,ir->nstxout)) { mdof_flags |= MDOF_X; }
if (do_per_step(step,ir->nstvout)) { mdof_flags |= MDOF_V; }
}
wallcycle_stop(wcycle,ewcTRAJ);
}
- GMX_MPE_LOG(ev_output_finish);
/* kludge -- virial is lost with restart for NPT control. Must restart */
if (bStartingFromCpt && bVV)
so scroll down for that logic */
/* ######### START SECOND UPDATE STEP ################# */
- GMX_MPE_LOG(ev_update_start);
bOK = TRUE;
if (!bRerunMD || rerun_fr.bV || bForceUpdate)
{
unshift_self(graph,state->box,state->x);
}
- GMX_BARRIER(cr->mpi_comm_mygroup);
- GMX_MPE_LOG(ev_update_finish);
-
if (vsite != NULL)
{
wallcycle_start(wcycle,ewcVSITECONSTR);