← Back to team overview

dolfin team mailing list archive

Broadcast/receive

 

I worked some on the logic for broadcast/receive. Take a look at the
constuctor of UnitSquare. It has two lines (now commented out)
that take care of broadcast/receive:

  if (MPIManager::receive()) { receive(); return; }

  [code for creating UnitSquare goes here]

  if (MPIManager::broadcast()) { broadcast(); }

The function MPIManager::receive() determines whether the mesh should
be received from another process instead of created, according to the
current policy for communication. Right now, only one policy is
implemented but this may change (depending on for example whether the
user wants to take care of communication or let's DOLFIN decide on a
suitable policy). The current implementation just returns

  return numProcesses() > 0 && processNumber() > 0;

If MPI is not available it just returns false.

Similarly, the function MPIManager::broadcast() determines whether the
mesh should be broadcast to all other processes:

  return numProcesses() > 0 && processNumber() == 0;

-- 
Anders


Follow ups