[gmx-developers] move_x and move_f

Nathan Moore nmoore at physics.umn.edu
Fri Jun 24 02:03:17 CEST 2005


I've been looking into the parallelization of GROMACS - specifically the
way messages are passed in the functions move_f and move_x (defined in
src/gmxlib/mvxvf.c)

In the source file I see,

void move_f(FILE *log,
            int left,int right,rvec f[],rvec fadd[],
            t_nsborder *nsb,t_nrnb *nrnb)
{
  move_rvecs(log,TRUE, TRUE,left,right,f,fadd,nsb->shift,nsb,nrnb);
  move_rvecs(log,FALSE,TRUE,left,right,f,fadd,nsb->bshift,nsb,nrnb);

  where();
}

I don't understand why the move_rvecs function is called twice.  What's
the difference between nsb->shift and nsb->bshift?  Do I understand
correctly that move_f broadcasts, by way of the ring, each node's updated
f array to all of the other nodes?  I feel like something else is going on
in the function that I don't understand yet.

regards,

Nathan Moore



More information about the gromacs.org_gmx-developers mailing list