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