Dear Dr. Axel
As I read the comm.h, there is an array which store the 6 neighbors of a processor: procneigh. For “comm_style tiled”, the neighboring processors is larger than 6 as can be shown in the figure from the “fix balance” command. I am wondering is there another array to store the neighboring processor for comm_style tiled. Thanks very much!
Dear Dr. Axel
As I read the original paper from Steve, the communication for uniform grid is along the three directions, up-down, north-south and east-west. I am wondering how you do the communication for comm_tiled as in the north direction there can be several processors to communicate. Thanks very much!
Comm brick does the 6-neighbor communication. Comm tiled does it differently.
Obviously it’s more complicated. See these sections in comm_tiled.h which
store the needed info:
// forward/reverse comm info, proc lists include self
// exchange comm info, proc lists do not include self
Thanks very much, Steve. I am wondering if there is some paper like the LAMMPS paper which describe how the communication works for “comm_style tiled”. Thanks. Hao
You probably want to read about the RCB (Recursive Coordinate Bisection) Algorithm. A small explanation with some links here: http://www.cs.sandia.gov/zoltan/dev_html/dev_rcb.html
Thanks, Diaz, Adrian. I think that RCB is the algorithm for balancing the load of each processor. Do you know how they communicate with each other after the balance work is done? Hao
Thanks, Diaz, Adrian. I think that RCB is the algorithm for balancing the
load of each processor. Do you know how they communicate with each other
after the balance work is done? Hao
as steve already pointed out, you have to read through the comm_tiled.cpp
file to see how this is done. if you want to know things at this level of
detail, there is no way around reading the source code and the comments and
tracking what is happening with a piece of paper and a pen.