The EnSight Visualization Application 433
system complexity, have predicated a move to a new launch system for the
EnSight framework. User requirements for the new system include support
for queuing systems, improved launch scalability, dynamic application config-
uration, VPN communications, session persistence, and enhanced debugging
capabilities.
To meet these requirements, CEIShell was developed. Simplicity and exten-
sibility were key themes in the design of the system. The simplicity of CEIShell
contributes greatly to its overall robustness and reduces the amount of work
necessary to customize it to specific platforms, queuing systems, firewall poli-
cies, etc. The system can be extended to support site-specific network and job
configuration protocols. CEIShell is a small C++ application that weaves four
concepts together: tree-based communications with other CEIShells, commu-
nications with locally running applications, a tag-based resource specification,
and local job management. Perhaps the largest benefit of CEIShell is the im-
provement in session robustness, stemming from the fact that EnSight can
probe potential session resources (e.g., validating environmental parameters,
OpenGL configurations, etc.) before attempting to launch the session.
A collection of CEIShells is invoked as a rooted, acyclic, tree network. Typ-
ically, command line parameters indicate parent–child relationships as well as
specific communication protocols and their parameters. The actual commands
used to launch the multiple CEIShells on the various computers are provided
by site-specific customizations. Issues such as remote computer access, net-
work security, cluster queuing system commands, and user credentials dictate
how applications, including CEIShell, are actually invoked on behalf of the
user. The commands to launch a specific instance of a CEIShell network are
commonly wrapped in a custom script that is parameterized by the site. For
example, the number of compute nodes, the number of rendering nodes, and
the users credentials might be parameters mandated by the site maintainer.
The EnSight client provides a customizable GUI that can be used to invoke a
site’s CEIShell network scripts along with any required parameterization.
21.3.1 Virtual Clustering Via CEIShell Roles
Along with the specification of CEIShell’s parent–child communication
parameters, a site customization script indicates what roles each CEIShell
provides. Roles are simply ASCII tags applied to each CEIShell instance. Each
shell may have any number of roles. The CEIShell itself does not dictate the
use of roles other than to use them to perform a resource search. A simple but
useful example of roles would be to give nodes in a cluster standardized names.
For example, one might allocate 10 nodes via a batch system on a cluster
but assign the roles “node00” through “node09” to the nodes. When EnSight
encounters a reference to “node04” in a resource or other configuration file, the
CEIShell network can remap the name via the roles to a specific, dynamically
allocated node. In this use-case, the CEIShell becomes a virtual cluster that
always appears the same to a calling application, regardless of which nodes