Introduction to Grid Computing with Simple Grid Protocol

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


OVERVIEW
--------
The 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.

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 & 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 and ACR. This happens approximately every
    30 seconds.


Grid Friendly Software

1.) The file "porta.lisp" contains the function (porta) that is
    used to make CLISP 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).

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, if unsuccessful the
    computer with the next highest ACR, and so forth. 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.

3.) Remember, if a programming task performs I/O (eg. 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! ***
