Introduction to Grid Computing with Simple Grid Protocol

Simple Grid Protocol 1.2 - Copyright (c) Brendan Kosowski 2004, 2005, 2015, 2019


OVERVIEW
--------
Simple Grid Protocol is designed to allow users on a TCP/IP
network or the Internet to run programs on their computer which
utilize the unused CPU resources of other computers on a network
or the Internet.

These programs are made up of both local tasks & portable tasks.
The portable tasks will be executed on the computer on the grid
that has the most available CPU resources at the time. The local
tasks are executed on the user's local machine and are tasks that
cannot be executed on another computer on the grid because local
I/O operations must be performed.

As of Simple Grid Protocol 1.2, programs can concurrently execute
tasks on multiple computers on the grid by specifying the Nth best
computer (sorted by available CPU resources) assigned to each
portable task (e.g. task 0: computer 0(1st best IP), task 1: comp-
uter 1(2nd best IP), etc..).

Grid Components

1.) The Tracking Server (aka CONTROL NODE) (1 system).
2.) The Computers (aka CYCLE SHARING NODES) (remaining systems)
    which run the CPU Resource Server and Notify Daemon.
3.) Grid Friendly Software (run on the computers)


SERVERS, DAEMONS & SOFTWARE
---------------------------
Tracking Server (aka CONTROL NODE)

1.) The tracking server keeps track of the ACR (Available CPU
    Resources) of all the computers on the grid. Here is the
    formula for ACR: ACR = CPU_Frequency(MHz) x CPU_Idle(%) / 100

2.) The tracking server maintains a record of each computers IP
    Address, ACR, Flags (indicating the XML capability of each
    computer) & the Time the record was submitted to the tracking
    server.

3.) The tracking server purges all records more than 40 seconds
    old.


CPU Resource Server (aka CYCLE SHARING NODE)

1.) This is the server that allows a computers CPU resources to
    be used by other computers on the grid. The CPU Resource
    Server allows other computers on the grid to pass it portable
    tasks, executes the portable tasks and returns the result of
    the execution back to the computer that passed it the portable
    task. 

2.) The CPU Resource Server allows a single line of lisp language
    code (in the form of a single lisp form or object) to be
    evaluated and the result is returned.


Notify Daemon

1.) This background program notifies the Tracking Server of your
    computers IP address, ACR and Flags. This happens approximately
    every 30 seconds.


Grid Friendly Software

1.) The file "porta.lisp" contains the function (porta) that is
    used to make SBCL programming tasks portable so that they
    can run on any system on the grid (that has the CPU Resource
    Server installed and the Notify Daemon running). The files
    "example1.lisp", "example2.lisp" & "example3.lisp" give
    examples of how to use the function (porta). "example4.lisp"
    is a multi-thread example that runs portable tasks on 2
    Grid Computers concurrently. "example5.lisp" and "example6.lisp"
    are programs that calculate the value of PI, allowing the
    comparison of single thread (Local Computer) and multi thread
    (4 Grid Computers concurrently) examples respectively.

2.) The function (porta) will obtain a list of computers on the
    grid from the Tracking Server and attempt to run the portable
    task on the computer with the highest ACR by default. As of
    Simple Grid Protocol 1.02, if the local machine has the highest
    ACR, the portable task will be run directly instead of being
    sent via the network to be run on the grid. As of Simple Grid
    Protocol 1.2, the computer with the Nth highest ACR can be
    selected to run the portable task and portable tasks can also
    be run concurrently using the built in threading functions.

3.) Remember, if a programming task performs I/O (e.g. displays
    info or inputs data from a mouse/keyboard) it must not be
    made portable because I/O tasks require your local machine.

    
*** Have Fun! ***
