    Introduction to Grid Computing with Simple Grid Protocol 1.0


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

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 (1 system).
2.) The Computers (remaining systems) which run the CPU Resource
    Server and Notify Daemon.
3.) Grid Friendly Software (run on the computers)


SERVERS, DAEMONS & SOFTWARE
---------------------------
Tracking Server

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

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

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! ***
