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, 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. AspectShell further builds on top of current middleware environments like Globus, Condor, Portable Batch System (PBS), and Load Sharing Facility (LSF). Commands, or data streams, cause agents to be spawned by AspectShell to handle the translation of these actions to the middleware layer. These agents are external executables that may be "plugged" into AspectShell to enact site specific actions, providing localized autonomy at each compute node or site.
A high level architectural stack diagram showing where AspectShell fits in a local installation is shown below:
AspectShell supports the concept of user-definable agents to translate shell actions, and I/O redirections, to the appropriate services available in the underlying distributed/parallel computing infrastructure. These agents are pluggable, allowing researchers to replace them with wrappers that enact custom policies. The AspectShell framework can therefore be used to support heterogenous distributed/parallel computing infrastructures with technologies like Globus, Condor, LSF, or PBS.
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


