High Performance Computing and TupleSpaces Student: Jeremy Kemp Advisor: Hong Lin
High Performance Computing Our cluster : Grid Rocks 5.1 64-bit What TSpaces uses
What is Grid?
Images courtesy of Intel.com What is Grid? Cabinet 0 Cabinet 1 17 Nodes 3.06 GHz 1GB RAM 17 Nodes 1.8 GHz 2GB RAM Images courtesy of Intel.com
Images courtesy of Intel.com What is Grid? Head Node – Grid itself Dual Socket Quad Core Xeon Workstation 8 cores total Jobs are Started Here Hosts all the data (for now) 12GB of RAM Images courtesy of Intel.com
What is Grid?
What is Rocks? Developed at UCSD using an NSF grant It allows a cluster to be installed and running in under a day Comes with Cluster infrastructure tools Contains all of the things a cluster needs
What does TSpaces use? Network File System Pre-configured public key authentication Automatic user account creation DNS allows easy access to the same TSpaces Server
Tspaces TSpaces is a Java package that contains: Tspaces server Java module containing methods and data structures used in programming a tspaces program Used primarily as a cross-platform communications platform
TupleSpaces This is what TSpaces is named after Runs on one host All data is stored here Programmer uses TSpace methods to access Full of Tuples
The Tuple All data stored in a TSpace must be inside a Tuple Can hold primitives and classes, including user defined classes Tuples can be nested Tuples are a subclass of superTuple
Tspaces Methods read() take() waitToread() waitToTake() write() countN() delete() deleteAll()
Configuring TSpaces Unpack the tarball to the NFS Using GNU Screen, open a persistent instance of the TSpaces server Add the location of the TSpaces files to the user's classpath Run the program on the number of nodes desired
GammaSort An Example program modeled after the Chemical Reaction Model Is parallelizable to n/2 nodes 4 Other programs written to debug/run gammaSort: dataGenerator.java dataViewer.java dataCleaner.java dataReset.java
GammaSort Data elements consist of a tuple: tuple dataTemplate = new Tuple(new Field(Integer.class), new Field(Double.class)); The integer is the index of the search The above is the template, used to 'search' for the desired tuple using read() and take()
GammaSort Data elements are pulled from the TupleSpace by the compute node and compared If they are “out of order” they are switched The Data elements are then written back to a tuplespace
GamaSort and Synchronization In order to synchronize the data, 4 counters are used 4 tupleSpaces are used Two TupleSpaces for the data elements being read (one even and one odd) Two TupleSpaces for the data elements being written (one even and one odd) All data must be handled in pairs to determine when to Terminate the program.
Future Improvements Consolidate all of the support applications in to one, customizable GUI application to help build future programs in TSpaces Use more of the Features and Customizations to provided by TSpaces Automated Startup tool/script