updated class diagram and design document
git-svn-id: svn://anubis/gvsu@403 45c1a28c-8058-47b2-ae61-ca45b979098e
This commit is contained in:
parent
d055d8551b
commit
0081edb738
Binary file not shown.
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 47 KiB |
@ -134,9 +134,39 @@
|
|||||||
of the worker nodes going down and still produce the final image.
|
of the worker nodes going down and still produce the final image.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<span class="update">
|
||||||
|
<p>
|
||||||
|
Update:
|
||||||
|
To implement this distributed algorithm, I thought about using
|
||||||
|
the MPI framework.
|
||||||
|
MPI, however, was not natively designed to handle fault tolerance.
|
||||||
|
So, I decided to implement the distributed framework with raw
|
||||||
|
TCP sockets.
|
||||||
|
This solution is very portable because it only relies on
|
||||||
|
TCP socket availability and not a third-party library.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
At first TCP was not sending the message data fast enough
|
||||||
|
for my program.
|
||||||
|
I considered switching to UDP but instead turned on the
|
||||||
|
socket option TCP_NODELAY which disables the "Nagle" buffering
|
||||||
|
algorithm and sends the data as soon as it is available.
|
||||||
|
This made using TCP feasible and my CPU utilization grew.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The application-level protocol is very simple.
|
||||||
|
It was designed to transmit short messages across the wire.
|
||||||
|
An integer representing the message type is transmitted,
|
||||||
|
followed by the payload of the message.
|
||||||
|
Task identifiers are sent using a single 4-byte integer.
|
||||||
|
Bitmap data is transmitted as packed data, 3 bytes per pixel.
|
||||||
|
</p>
|
||||||
|
</span>
|
||||||
|
|
||||||
<li>Program Organization</li>
|
<li>Program Organization</li>
|
||||||
<p>
|
<p>
|
||||||
The follows the object-oriented design paradigm.
|
The program follows the object-oriented design paradigm.
|
||||||
|
It is written in C++ so that it is portable and efficient.
|
||||||
It is made up of a collection of modules, which are organized
|
It is made up of a collection of modules, which are organized
|
||||||
into functional groupings.
|
into functional groupings.
|
||||||
Each module implements one or more classes of objects for the system.
|
Each module implements one or more classes of objects for the system.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user