From 0081edb738def0e64b8ec91cbba0465523097cf7 Mon Sep 17 00:00:00 2001 From: josh Date: Wed, 15 Apr 2009 22:03:25 +0000 Subject: [PATCH] updated class diagram and design document git-svn-id: svn://anubis/gvsu@403 45c1a28c-8058-47b2-ae61-ca45b979098e --- cs658/html/class-diagram.png | Bin 46907 -> 48243 bytes cs658/html/design.html | 34 ++++++++++++++++++++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/cs658/html/class-diagram.png b/cs658/html/class-diagram.png index 7fd7640dcf6e4588eff5e8ba2bce6e015fe13a3f..b39f195bab995a3252643778015dbbfd2d67c2f0 100644 GIT binary patch literal 48243 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 literal 46907 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%0A5zLUUxjDrV~Xm^H#wp6lbi)GoEc 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
  • Distribution
  • @@ -134,9 +134,39 @@ of the worker nodes going down and still produce the final image.

    + +

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

    +

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

    +

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

    +
    +
  • Program Organization
  • - 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 into functional groupings. Each module implements one or more classes of objects for the system.