Next: Transaction Protocol.
Up: Communication
Previous: Client/Server.
In the previous section we discussed the ``external'' client-to-server
communication. When it comes to the server's internal communication between
worker and boss processes, the situation is different. For the following
reasons, we decided to use MPI as the server's internal communication
infrastructure:
- MPI works perfectly on clustered environments.
- MPI is the standard for message passing.
- All parallel platforms provide a (presumably efficient) implementation
of MPI.
- MPI has proven to meet high scalability requirements.
- Many MPI functions (like reductions) provide functionality which we did
not have to re-invent.
Unfortunately, the latter cannot be fully exploited because the server must be
in the position to cancel a request prematurely: all collective operations are
blocking in the sense, that once started, they must be completed on all
participating processes. Hence, a separate ``control-channel'' is required
which is based on non-blocking (unfortunately, non-collective) MPI functions.
A communication structure uses MPI_Isend, MPI_Irecv and repeated calls to
MPI_Test to allow premature cancellation of the current work on a request.
Collective operations are then only executed after being told so through the
control channel. Unfortunately, this decreases the performance a little. We
are looking into better approaches.
Next: Transaction Protocol.
Up: Communication
Previous: Client/Server.
2003-10-06