SInRG Application HOWTO

Revision History
Revision 1.02004, June 25 
First Public Release

Abstract

This paper is intended to help developers port their applications to run on the SInRG platform. It defines a few basic tips that can be used to evaluate how an application can use the grid resources. These tips will serve as a first step to making an application run on SInRG.


Although SInRG consists of several cluster computers, its resources are not intended for running typical cluster applications. Because the project aims to explore grid computing, applications that run on SInRG must be more than just distributed applications, but also grid applications. In order for an application to be considered a grid application, it must be loosely coupled (little or no interprocess communication) and must use a grid middleware for scheduling and distribution. Although MPI is installed on most SInRG machines, users are discouraged from using MPI in their applications and encouraged to use NetSolve (http://icl.cs.utk.edu/netsolve/). The grid computing model used in NetSolve provides a simple interface to distributing work among many processors, but eliminates the possibility of inter-process communication. Each NetSolve process is completely independent from each other process, using separate data and only able to communicate its results back to the calling process. Not all applications are suited for this model, but many applications that, on the surface, appear incompatible with this model can still be adapted to use NetSolve. Applications that are embarrassingly parallel in nature lend themselves very well to the NetSolve grid computing model.

NetSolve can be interfaced from several popular programming languages and environments. These languages include C, Fortran, Matlab, Mathmatica, and Octave. NetSolve servers, installed on SInRG machines, have many commonly used functions or "problems" that they are able to solve. Those who wish to use SInRG in their application should first check if they are using one or more common functions that NetSolve is already able to solve. For example, if an application uses LAPACK's dgesv routine, which NetSolve is able to solve, the application developer will only need to change their code slightly to call NetSolve, rather than calling LAPACK directly. Here is an example:

As a first step to adapting an application to use NetSolve, application writers should look at the list of functions available on NetSolve (either via the NetSolve website or the NS_problems utility, provided with NetSolve). If a function that is available through NetSolve is being used in the application, it can be sent to NetSolve to be solved on a SInRG machine. Before proceeding in this way, the developer should make sure that the size of the input warrants such an action. If the time to send the data to and from the server is greater than the time required to solve the problem, then using NetSolve will not make any sense and will result in a slower application. If an application uses some commonly available library that is not currently installed in NetSolve, contact the Jeff Larkin about adding the library to NetSolve. Using SInRG resources through NetSolve to perform core calculations in an application is the simplest option for a developer and provides a good starting point.