AspectShell Overview
AspectShell (formerly known as GridShell) is an aspect-oriented scripting tool that is being researched and developed at the Texas Advanced Computing Center. The tool investigates semantic extensions to the Tenex C Shell (TCSH) and Bourne Again Shell (BASH) to transparently incorporate useful distributed/parallel computing concepts into the UNIX shell login environment. The aim of the project is to hide the complexity of using distributed computing technologies, improve the productivity of the computational scientist, and consequently, increase the quality of computational science that is being conducted.
Many of the features in AspectShell have been driven by real scientific user requirements that have been gleaned here at the University of Texas at Austin and the national TeraGrid scientific user community. The current alpha-release version of AspectShell extends TCSH version 6.14 and BASH version 3.2, incorporating features to support parallel inter-script message-passing and synchronization; transparent I/O redirection to remote files; and large-scale parametric sweep job submissions with throttling.
It is our contention that these distributed computing patterns are cross-cutting concerns. Therefore, our shells allow software agents to be spawned to handle the translation of these common distributed computing actions to an appropriate middleware layer. These agents are external executables that may be "plugged" into AspectShell to enact site specific actions. These agents also allow researchers to replace them with wrappers that enact custom run-time behaviors. With this mechanism, AspectShell can build on top of common middleware environments like Globus, Condor, Portable Batch System (PBS), and Load Sharing Facility (LSF) -- enabling a clean separation of concern of the user and the complex task of providing a robust distributed computing environment.
A high level architectural stack diagram showing where AspectShell fits in a local installation is shown below:
Some examples of semantic extensions to TCSH are shown below.
Redirecting the standard output of a command to a remote file location using GlobusFTP:
%> a.out > gsiftp://bandera.tacc.utexas.edu/work/data
Executing 2 parallel tasks:
%> a.out on 2 procs
Message passing between 2 parallel tasks:
if ( $_ASPECT_TASKID == 0) then
echo "hello" > task_1
else
set msg=`cat < task_0`
endif
Executing 10000 instances of a job, and throttling at 100 a time:
%> setenv _ASPECT_THROTTLE 100 %> a.out in 10000 instances


