updated class diagram and design document

git-svn-id: svn://anubis/gvsu@403 45c1a28c-8058-47b2-ae61-ca45b979098e
This commit is contained in:
josh 2009-04-15 22:03:25 +00:00
parent d055d8551b
commit 0081edb738
2 changed files with 32 additions and 2 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 47 KiB

View File

@ -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.