|
Introduction
Project DISCOVER (Distributed Interactive Steering and CollaborativeVisualization Environment) is an attempt to develop a generic framework that will enable interactive steering of scientific applications and also allow for collaborative visualization of data sets generated by such simulations. We aspire to develop a computational infrastructure that will have the potential of transforming large-scale distributed scientific and engineering simulations into interactive and collaborative ones where numerous scientists, geographically distributed, will monitor, analyse and steer scientific computations. Scientific simulations play an increasingly critical role in all areas of science and engineering. The simulations of expensive scientific problems are necessary to validate and justify the investment to be made. Interactive computational steering helps increase the performance of simulations for scientists because it allows them to drive the simulation process by interacting with their data. In addition, collaboration between scientists situated in geographically distributed locations would significantly increase understanding of the complex phenomenon underlying these simulations. Project DISCOVER is being developed at The Applied Software Systems Laboratory (TASSL) in the Computer Aids for Industrial Productivity (CAIP) atRutgers University. Application domains DISCOVER aims to build a framework that can be used to integrate a suite of
|
|
Overview
Computational steering is the online management of the execution of an application and of the resources it uses. Such a monitoring tool is necessary for controlling the execution of long-running, resource intensive applications and for purposes of experimenting with application parameters or improving application performance. In an interactive computational process, a sequence of specification, computation and analysis is performed. Interactive simulations is a way to increase the utility of high performance simulations whereby scientists can drive the scientific discovery process and interact with the data being computed. They can interpret what is happening to data during simulations and steer calculations at real-time. Also, computational steering enhances productivity by reducing the time between changes to parameters and the viewing of results. It enables the user to explore a what-if analysis, and as changes in parameters become more instantaneous, the cause-effect relationships become more evident. DISCOVER is a generic architectural framework into which any scientific application can be integrated to be made interactive so as to be able to collaborate the motinoring, analysis and steering of the application. Our approach to the formulation of a solution for this consists of the following
|
The architectural components of DISCOVER are
Architecture of the DISCOVER system
Enhancements to computation objects
In order to provide these objects the capability to access/modify objects residing in the address space of other processors in the system, distributed object technology like CORBA needs to be used. However, one drawback of using currently available ORBA implementations is that scientific applications cannot tolerate the delays inherent in most of the current CORBA compliant systems. Another reason is that, typically, data structures are distributed between address spaces of processors. What this means is that data distributed across processors has to be accumulated before they make any sense. Current technologies do not provide this capability of defining and interacting with distributed data structures. We intend to develop a Object Request Broker architecture specially for multiprocessor systems to manage distributed objects in a multiprocessor system.
To build interaction capability into the application and the computation objects, DISCOVER superimposes a control network consisting of interaction agents onto the existing data network of the application. This involves creating interfaces that can query the application objects about their status during the course of computation. They also can respond to requests from the outside world regarding the application
status and other details of the objects in the application. The computation objects are categorized as local, global or distributed objects. A local object resides completely in the address space of a single processor at a given point of time. This object can,
during the course of computation move to another processor. Also, multiple processors can have their own local instances of a local object. A distributed object has data distributed across processors and is thus said to have sub objects. During the course of computation, sub objects might move around processors in the same way that local objects do. Each sub object will know that it belongs to a bigger component. Aggregation of these distributed components is done by one of the processors, said to be the assembler of this distributed object. The assembler possesses knowledge of the data distribution of the data sets of the sub objects, which is updated every time data moves between processors. Multiple sets of processors can have unique instances of the same distributed object. A global object has only one instance for the entire application. No processor owns a local copy of this, and it has only one owner. All changes to a global object are reflected among all processors. This could again be of two types - global simple and global distributed. A global simple object is a global object that resides completely on one single processor. On the other hand, a global distributed object has the same properties as a distributed object, except that all processors will be cognizant of only one global instance of the data object.
The interaction capability of the computation objects is decided by the corresponding exported interfaces, which can be queried by the network of interaction agents. These interfaces enable viewing and modifying of the underlying data, if permissible. The network of interaction agents queries these interfaces to obtain the latest status of the computation objects. During the course of computation, the interaction agents receive and respond to requests arriving from clients, which are monitoring and steering the application.
Distributed Analysis and Interaction Servers
The interaction and control substrate supports a network of analysis and interaction
servers, each of which is essentially a web-server enhanced to provide the range of
specialized services. The overall server architecture builds on the Servlet
technology, and consists of
a main acceptor/controller servlet and a suite of service handlers like
visualization/computation handler,
interaction and steering handler,
session archival and database handler.
authentication and security handler manages user authentication, etc.
The visualization/computational handler interfaces with specialized visualization and
computational servers to handles compute intensive visualization request on large
datasets either in a archival storage or from computed timestep in a running
simulation. The session archival server logs all interactions between the client(s) and
an application to enable to support late-arriving clients and provide replay
capabilities. The simulation/interaction broker registers each application with the
server. A client connecting to the server is provided with a list of active application.
After the client selects an application and is authenticated, he/she can query the
applications state and for application objects that can be interrogated or steered.
Once the client demonstrates interest in the state of an application or object, the
state is automatically updated on the clients interface as long as he/she is connected
to the server. If a clients requests information that already resides at the server
(requested by another client), it is directly forwarded to the clients as long as its
timestamp matches the current state of the application. Communication between the
clients and the server uses a combination of JAVA RMI and socket communications.
We are additionally investigating JINI and JavaSpaces technology to coordinate
between the clients and servers.
Detachable Clients
The goal of DISCOVER is to bring large distributed adaptive simulations to the
scientist/engineers desktop by providing web-based interfaces for interaction and
visualization. The interaction and control substrate supports a range of detachable
clients, from palmtops connected through a wireless link to high-end desktops with
high-speed links. Clients can connect to a server at any time to receive information
about active applications. Information displayed at the client (surface/line plots, data,
text) can be set to be updated on demand or automatically as the applications evolve.
The client interface supports two desktops - a local desktop and a virtual desktop.
The local desktop represents the users private view, while the virtual desktop is a
metaphor for the global virtual space through which multiple users can collaborate
with the aid of tools like whiteboards and chats. Views (e.g. a plot) can be made
collaborative by creating them in the virtual desktop or transferring them from the
local to the virtual desktop. Session management and concurrency control is based
on capabilities grated by the server. A simple locking mechanism is used to ensure
the applications remains in a consistent state. In our current prototype the two
desktops are two separate applets built using Java and Java3D. We will additionally
investigate Java Beans, and VRML technologies.
Security and Authentication
Security and user authentication is critical in such a distributed collaborative
environment. The users will typically have graded levels of authentication levels with
corresponding interaction and control capabilities. We intend to use digital signatures
and digitally signed applets, incorporated by a security handler at the server. Digitally
signed applets certify that the applet being downloaded is from a trusted source,
which is critical for web-based interaction interfaces. This service could be extended
with a comprehensive security/data encryption layer if necessary for mission-critical
applications.
|
The objective of the collaboration support is to enable distributed and heterogeneous Schematic of Server - Client Interaction in the prototype implementation of DISCOVER |
Consider a scientific simulation solving an equation modeling the expansion of the universe or an oil extraction and production from a site.
When physicists and mathematicians write computer programs to solve these equations, they first target successfull runs giving a final and correct result; the issue of how long the run will take comes next...
Imagine now having written down an accurate solution to the modelisation of a complex physical problem wich for one run, given input parameters requires 3 to 5 days to finish, basically there is No feedback during runtime and even if there is, there is No way to modify a parameter at runtime, meaning that if the 2nd day you figure out that something is going wrong, you need to start all over again...this can get quite frustrating!!
Enters the idea of web-enabled problem solving environments.
The requirements statement above include :
The idea is to wrap the scientific application into a Supervision agent (the DIOS library) that for each parameter that a user might want to view, monitor or modify is given input/output capability to and from the application at runtime.
A middleware (DISCOVER Server) sitting between the user (DISCOVER Client) and the application is then necessary to perform the translation between the users' requests and the application responses. It can talk to the application directly using network connections and talk to clients through a Web server allowing even those behind firewalls to get access.
Given this design, it is now possible to connect, given proper credentials to a running application from virtually anywhere to view or modify the application parameters.
There is of course much more to say and many more features (Collaboration, Remote Visualization, Servers as peers, Metadata information querying) but this is just the main idea.
To achieve these functions we need some mechanisms:
How does DISCOVER work ?Given the mechanisms required to achieve this web-enabled collaborative computational portal, here is a short description of their implementation in DISCOVER:Important Classes in DISCOVER include: At the Client
|
||||||||||||||||||||
|
|




I tried to summarize the different messages that are exchanged within DISCOVER.
This helps to have a clearer view of the interactions that take place such as:
The current messages include:
APPLICATION_MSG APPLICATION_ID DISCOVERDEMO APPLICATION_ID_END APPLICATION_NAME DemoTransport2dAMR APPLICATION_NAME_END APPLICATION_DESCR 2-D Transport Application APPLICATION_DESCR_END APPLICATION_STATUS STARTED APPLICATION_STATUS_END APPLICATION_MSG_END
START_OBJECTS General Information on Object OBJECT_DESCRIPTION_MSG OBJECT_ID 2-D Transport Application NODE# 0 OBJ# 0 OBJECT_ID_END OBJECT_NAME [AO]2-D Transport Application OBJECT_NAME_END OBJECT_TYPE DIOS_DISTRIBUTED_OBJECT OBJECT_TYPE_END OBJECT_DESCRIPTION 2-D Transport Application OBJECT_DESCRIPTION_END OBJECT_INTERFACES Views Of Object OBJECT_GET_INTERFACES OBJECT_INTERFACE_NAME AppDetails OBJECT_INTERFACE_NAME_END OBJECT_INTERFACE_RETURN_TYPE TEXTDISPLAY OBJECT_INTERFACE_RETURNTYPE_END OBJECT_INTERFACE_PARAMS OBJECT_INTERFACE_PARAMS_END OBJECT_INTERFACE_NAME AppStatus OBJECT_INTERFACE_NAME_END OBJECT_INTERFACE_RETURN_TYPE TEXTDISPLAY OBJECT_INTERFACE_RETURNTYPE_END OBJECT_INTERFACE_PARAMS OBJECT_INTERFACE_PARAMS_END OBJECT_INTERFACE_NAME AMRParameters OBJECT_INTERFACE_NAME_END OBJECT_INTERFACE_RETURN_TYPE TEXTDISPLAY OBJECT_INTERFACE_RETURNTYPE_END OBJECT_INTERFACE_PARAMS OBJECT_INTERFACE_PARAMS_END OBJECT_GET_INTERFACES_END Commands Of Object OBJECT_SET_INTERFACES OBJECT_INTERFACE_NAME Pause OBJECT_INTERFACE_NAME_END OBJECT_INTERFACE_RETURN_TYPE TEXTDISPLAY OBJECT_INTERFACE_RETURNTYPE_END OBJECT_INTERFACE_PARAMS OBJECT_INTERFACE_PARAMS_END OBJECT_INTERFACE_NAME Continue OBJECT_INTERFACE_NAME_END OBJECT_INTERFACE_RETURN_TYPE TEXTDISPLAY OBJECT_INTERFACE_RETURNTYPE_END OBJECT_INTERFACE_PARAMS OBJECT_INTERFACE_PARAMS_END OBJECT_INTERFACE_NAME SetMaxLevel(int) OBJECT_INTERFACE_NAME_END OBJECT_INTERFACE_RETURN_TYPE TEXTDISPLAY OBJECT_INTERFACE_RETURNTYPE_END OBJECT_INTERFACE_PARAMS OBJECT_INTERFACE_PARAM_NAME MaximumLevel OBJECT_INTERFACE_PARAM_NAME_END OBJECT_INTERFACE_PARAM_TYPE int OBJECT_INTERFACE_PARAM_TYPE_END OBJECT_INTERFACE_PARAMS_END OBJECT_INTERFACE_NAME SetErrorThresh(double) OBJECT_INTERFACE_NAME_END OBJECT_INTERFACE_RETURN_TYPE TEXTDISPLAY OBJECT_INTERFACE_RETURNTYPE_END OBJECT_INTERFACE_PARAMS OBJECT_INTERFACE_PARAM_NAME ErrorThreshold OBJECT_INTERFACE_PARAM_NAME_END OBJECT_INTERFACE_PARAM_TYPE double OBJECT_INTERFACE_PARAM_TYPE_END OBJECT_INTERFACE_PARAMS_END OBJECT_INTERFACE_NAME SetRefineFrequency(int) OBJECT_INTERFACE_NAME_END OBJECT_INTERFACE_RETURN_TYPE TEXTDISPLAY OBJECT_INTERFACE_RETURNTYPE_END OBJECT_INTERFACE_PARAMS OBJECT_INTERFACE_PARAM_NAME RefineEvery OBJECT_INTERFACE_PARAM_NAME_END OBJECT_INTERFACE_PARAM_TYPE int OBJECT_INTERFACE_PARAM_TYPE_END OBJECT_INTERFACE_PARAMS_END OBJECT_INTERFACE_NAME SetClusterBuffer(int) OBJECT_INTERFACE_NAME_END OBJECT_INTERFACE_RETURN_TYPE TEXTDISPLAY OBJECT_INTERFACE_RETURNTYPE_END OBJECT_INTERFACE_PARAMS OBJECT_INTERFACE_PARAM_NAME ClusterBuffer OBJECT_INTERFACE_PARAM_NAME_END OBJECT_INTERFACE_PARAM_TYPE int OBJECT_INTERFACE_PARAM_TYPE_END OBJECT_INTERFACE_PARAMS_END OBJECT_SET_INTERFACES_END OBJECT_INTERFACES_END OBJECT_DESCRIPTION_MSG_END
APPLICATION_STATUS APPLICATION_NAME DemoTransport2dAMR APPLICATION_NAME_END APPLICATION_STATUS RUNNING APPLICATION_STATUS_END APPLICATION_GLOBAL_PARAMS GLOBAL_PARAM_NAME Iteration# GLOBAL_PARAM_NAME_END GLOBAL_PARAM_VALUE 0 GLOBAL_PARAM_VALUE_END GLOBAL_PARAM_NAME FineLevel GLOBAL_PARAM_NAME_END GLOBAL_PARAM_VALUE 0 GLOBAL_PARAM_VALUE_END APPLICATION_GLOBAL_PARAMS_END APPLICATION_STATUS_END
OBJECT_RESPONSE_MSG OBJECT_ID 2-D Transport Application NODE# 0 OBJ# 0 OBJECT_ID_END OBJECT_INTERFACE_NAME AppDetails OBJECT_INTERFACE_NAME_END OBJECT_INTERFACE_RETURN_TYPE TEXTDISPLAY OBJECT_INTERFACE_RETURNTYPE_END OBJECT_RESPONSE ****************************************** ********** 2-D Transport Application ********** ****************************************** ******** Grid Properties ******** ****************************************** nx = 33 ny = 33 xmin = 0 xmax = 1 ymin = 0 ymax = 1 dx = 0.03125 dt = 0.015625 ****************************************** ******** AMR Properties ********* ****************************************** Absolute MaxLev = 3 Current MaxLev = 3 Threshold = 0.005 RegridEvery = 4 BufferWidth = 2 BlockWidth = 1 MinEfficiency = 0.85 ****************************************** OBJECT_RESPONSE_END OBJECT_RESPONSE_MSG_END
DELETE_OBJECTS
OBJECT_DELETE_MSG
OBJECT_ID
OBJECT_ID_END
OBJECT_DELETE_MSG_END
GET From GlobalUpdateThread to GlobalUpdateHandler
[AppID,appID]
[ClientID,clID]
OBJECT_QUERY_MESSAGE OBJECT_ID GridFunction2d:u NODE# 0 OBJ# 4 OBJECT_ID_END OBJECT_INTERFACE_NAME XSlice OBJECT_INTERFACE_NAME_END OBJECT_QUERY_MESSAGE_END
GET From Client to logServlet
[AppID,appID]
[Client,clID]
[Command,History]
Collaboratories
|
INFORMATION SHARING IN A COLLABORATIVE ENVIRONMENT The VizWiz [1] is one of the pioneer works, which provides remote visualization using data repository. It is implemented as a Java applet, which can be loaded and run automatically by a Web browser. Another approach to Web collaboratory is the NCSA Habenero [2] written in Java. The system is based on a centralized server and right now only provides support for Java applications which causes high interconnect delays. Collaborative Visualization [3] architecture develops the collaborative visualization system as an extension of IRIS explorer. The starting point is the architecture of a modular visualization environment, each module of the pipeline can be either local or from a session participant. A tradeoff has been made in terms of speed by using TCPIP to achieve the reliability of a dedicated connection for each participant. The Tango system [4] was designed to have a centralized server and is web browser enabled using the LiveConnect interface (written in C) by Netscape. Separation of the messaging layer into control and application messaging provides a clean API, enabling existing applications to be integrated to this system by adhering to the application specific communication protocol. The system also provides dynamic entry/exit and rollback feature by using the central data repository to store the entire session. The CCASEE [5] aims at providing a distributed workspace using Java RMI. The new object is detected by the participants by polling operation, and an update is made to the workspace and the JDBC based data repository. Each communication between the application and the client needs to be expressed in an intermediate format by building on existing libraries provided by ORBs, and thus is not feasible in a real time environment. Java RMI introduces inherent delays of its own due to the additional compilation required using rmic and lookup time. The Java Environment for Distributed Invocation (JEDI) [6] provides an alternative to using RMI for dynamic invocation. Instead of involving a stub compiler, JEDI provides a software library for making remote method calls. The system does not support asynchronous method calls (with an option of receiving the return value later), but reduces the inherent latency involved with RMI. The CEV system [7] is an approach at collaborative visualization using the central server to perform the computations necessary to generate new views. The server decides whether to send back the image using RMI or send it as a module used to perform the necessary image generation. The browser environment provides for easy interaction and reduces the resource requirement at the local machine. Control mechanism currently implemented uses the round robin algorithm with each participant allowed steering the application for a fixed time slice. As for the Infospheres [8], the focus of this project is in investigating compositional systems supporting peer-to-peer communications among persistent, multithreaded, distributed objects. This framework is composed of two units, dapplets (which are multithreaded, communicating objects) and sessions (which groups of composed dapplets). The initial implementation of the system was using UDP socket, with an intermediate layer to ensure reassembly in the correct order at the receiver. Though this framework is highly generic, it is difficult to allow collaboration of legacy systems using this framework. Thus its application to the scientific computing scenario could be limited to new versions of the systems.
The Collaborative Virtual Workspace [9] utilizes a client/server architecture to implement the shared virtual workspace. It provides for text based interaction using TCPIP socket communication and audio/videoconferencing using the IP multicast.
References:
|
|
On Interactive Computational Steering Introduction Computational steering is the online management of the execution of an application and of the resources it uses. Such a monitoring tool is necessary for controlling the execution of long-running, resource intensive applications and for purposes of experimenting with application parameters or improving application performance. In an interactive computational process, a sequence of specification, computation and analysis is performed. Interactive simulations is a way to increase the utility of high performance simulations whereby scientists can drive the scientific discovery process and interact with the data being computed. They can interpret what is happening to data during simulations and steer calculations at real-time. Also, computational steering enhances productivity by reducing the time between changes to parameters and the viewing of results. It enables the user to explore a what-if analysis, and as changes in parameters become more instantaneous, the cause-effect relationships become more evident. The main areas where computational steering can be used can be distinguished as:
In model exploration, computational steering is used to explore simulation behavior to gain additional insight into the simulation. In algorithm experimentation, the users are allowed to adapt the program algorithms at run time. For example, a user can experiment with different methods to solve a partial differential equation. In performance optimization, steering is used to manually improve an application's performance, for example, to perform load balancing interactively in parallel applications. Several computational steering environments have been built over the years. The results can be classified into application specific computational steering systems, domain specific computational steering systems and generic computational steering systems. Characteristics of a Computational Steering System The steering environment comprises of three major components: the user interface, the application, and the communication between the user interface and the application. These components may be handled by separate processes running in a distributed environment, or they can be executing in the same address space as the application. Also, the steering process does not have to be limited to single applications or single users. Several different users might perform collaborative steering of a single or multiple applications simultaneously. The system must set up an interactive session between the application(s) and the users. Once this is accomplished, at every step of the application’s computation, the system should wait to see if any user requests are pending. If so, the desired information must be extracted to be presented to the user. The type of information can vary depending on the kind of the steering application. For example, in parallel or distributed applications, the information about the distribution of the data over different processors or platforms has to be known, along with processor and network loads. To actuate steering actions, the environment must have access to the application's data and the modules to modify these data. The access to the monitoring information and the steering items could be synchronous or asynchronous. Another crucial aspect of the system is the user interface. The user interface has to present the information extracted from the application in an appropriate manner. This task could range from simple textual displays to complicated 3-D plots to visualize the data sets churned out by the application. Another important feature is to allow users to manipulate the steerable items of the application. This varies from application parameter manipulation for model exploration, to code generation for algorithm experimentation, and reconfiguration for performance optimization. Further, support must be available at the user end to allow the user to participate in an interactive session in collaboration with other users. In order to compare existing computational steering systems, we need to group the aspects of the steering system into categories so that they can be compared based on a particular characteristic of a typical computational steering system. This survey attempts to compare steering systems based on the following features / categories: 1) System scope 2) System Architecture 3) User interface System scope This category broadly comprises of the following features that are to be considered for evaluating a computational steering system. a) Type of steering - Is the system designed for model exploration, algorithm experimentation, performance optimization, or a combination of these? b) Ease of incorporating an existing application - Can an existing application be incorporated in the interactive framework or is the system designed for building entirely new applications? c) Steering distributed applications - Can the system be distributed with the user interface and the scientific application running on different hosts? d) Support for multiple applications - Can the framework be used for interacting with multiple applications simultaneously? e) Multiple clients - Can multiple clients participate in a single interactive session with an application? f) Portability - Can the system or components of the system be ported onto a different host? g) Synchronous / Asynchronous access of data - Does the application permit the user to access data elements synchronously or asynchronously? h) Fault - tolerant - Is the system fault tolerant? That is, if any one of the components fail, can the interaction resume/restore to original state? System Architecture This category attempts to categorize the diverse steering systems based on their architecture - this broadly takes into account the type of data/control flow between the various components of the system, data acquisition methods incorporated, etc. a) Application annotation and Data Abstraction - To create a steering application or to enable steering in an application, it has to be indicated which information is to be provided to the user and which steerable items the user can manipulate. b) Data Extraction - How does the system extract the monitoring system from the application? c) Steering access - How does the system access the steerable items of an application? d) Synchronization - What method of synchronization are available for the interaction process? User Interface This category identifies the ideal features of the interface provided to a user for steering the target application. a) Data presentation - How is the monitoring information presented to the user? b) Steering features - What kind of interface concepts are available to the user for manipulating the steerable items/application? c) Collaboration - Can multiple clients collaborate in an interactive session with the application? d) Customization of UI - can the user customize the UI according to his/her preferences?
Computational Steering Environment (CSE) The CSE has been developed at the Center for mathematics and Computer Science in Amsterdam, The Netherlands. System Scope The steering capability of the CSE is focused at model exploration. Multiple existing applications can be integrated into the framework by annotation of the application source code. The applications and multiple user interfaces processes can be distributed over different platforms. The CSE is built on a blackboard architecture that is described in detail. Blackboard models In this model of problem solving, multiple independent agents are allowed to share information in a central shared space. The model serves as a schema for organizing reasoning steps and domain knowledge to construct a solution to a particular problem. Knowledge is segmented into modules and a separate inference engine is provided for each module. Communication between modules is realized by reading and writing in the blackboard. The blackboard model does not explicitly specify a control component. The actual control can be in the information modules, in the blackboard itself, in a separate module, or in a combination of these. Architecture The architecture of the CSE is built around a data manager that acts as a blackboard for communicating data values. Separate processes, called satellites, can connect to the data manager and exchange data with it. An application is packaged as a satellite. The application code is annotated to make a connection to the data manager, to publish its output variables for visualization and its input parameters for steering, an to indicate when these are to be read and / or written. These satellites implement the simulation, analysis programs, and other visualization and rendering algorithms. The blackboard has two main functions.
Variable – the basic blackboard object Variables are defined as a tuple consisting of four components:
The name of an object is unique across all application objects. The type descriptor determines the size, type and layout of the data. The data component is the storage container for the raw data. Attributes are name value pairs that may be used to describe the meta-data of the variable. We presume this to mean attributes like access modifiers (READ, WRITE, etc.) Architectural components
The GNM maintains a list of all variables in the system and in which blackboard these variables exist. Only variable names, descriptors and attributes are stored – not the raw data.
A local blackboard resides on each host in the distributed environment. Local blackboards accept connections from satellites executing on the same host and other LBBs. Variable data is stored in the LBB, and is shared by all connecting satellites.
A satellite is a process that communicates with its corresponding LBB. Satellites may create, open, close, read/write, and subscribe to variable events. Programming Abstractions CSE provides a three-layered API to access the LBB, each layer providing a higher level of abstraction than the other. The local blackboard API is a low level library interface that provides functionality for LBB communication, variable management and event management. This layer provides all details of the underlying LBB protocols. It is difficult to use due to the inherent parallelism in the system. The higher layer provides a better interface to the LBB. This library hides the notion of events and has built in support for structuring variables into sets, and support for handling efficient set I/O. User Interface The user interface is by means of a satellite called the PGO Editor. It is an interactive graphic tool that allows users to create custom 2D, 3D user interfaces to visualize and manipulate data in the data manager. The user draws an initial layout of the interface with graphic objects. He then specifies how the geometry and attributes of these objects should be coupled to variables present in the data manager. The coupling of these objects can be bi-directional. As a result, the user can manipulate variables by direct manipulation on the object. Summary The architecture has been implemented on a number of heterogeneous UNIX and NT machines. TCP/IP is used for across host communication and, when possible, shared memory for satellite to LBB communication. Viewers are available for many displays, ranging from low-end laptop displays to sophisticated VR displays like CAVE. Important features
Visualization and Application Steering Environment (VASE) VASE was one of the first computational steering systems built, and was developed from the University of Illinois. Features
Architecture
User Interface
Progress and Magellan Features
Architecture
User Interface
Comparison of computational steering environments
|
A Collaboratory is defined as a place where scientists and researchers work together to solve complex interdisciplinary problems, despite geographic and organizational boundaries. Computational collaboratories provide uniform (collaborative) access to computational resources, services and/or applications. These systems expand the resources available to researchers, enable multidisciplinary collaborations and problem solving, increase the efficiency of research, and accelerate the dissemination of knowledge.
The growth of the Internet and the advent of the computational “Grid” have made it possible to develop and deploy advanced computational collaboratories. Recent efforts include the Upper Atmospheric Research Collaboratory (UARC), Diesel Combustion Collaboratory (DCC), Access Grid, RCSB, EMSL, Cactus, Astrophysics Simulation Collaboratory and DISCOVER. Each of these systems provides a high-level problem-solving environment (PSE) that builds on the underlying Grid technologies to provide seamless access to domain specific resources, services and applications. Together these systems have the potential for enabling truly global scientific investigation through the creation of meta-laboratories spanning many research groups, universities and countries, and transforming computational applications and simulations into global modalities for research and instruction.
While combining these systems can lead to truly collaborative, multi-disciplinary and multi-institutional problem solving, integrating these “focused” collaboratories presents significant challenges. This is because each of these systems has a unique architecture and implementation, and builds on different enabling technologies. Key among these challenges is the design and development of robust middleware support that addresses scalability, service discovery, security and access control, and interaction and collaboration management for consistent access. Such a middleware should define a minimal set of interfaces and protocols to enable collaboratories to share resources, services and applications on the Grid while being able to maintain their architectures and implementations of choice.
This research initiative investigates the architecture of such a middleware that enables integration of and global access to computational collaboratories. We present the design and implementation of a middleware substrate that enables a peer-to-peer integration of and global collaborative web-based access to multiple, distributed instances of the DISCOVER computational collaboratory. DISCOVER provides collaborative access to high-performance parallel and distributed applications for interaction and steering using web-based portals. The key design challenge is enabling scalable, secure, consistent and controlled access to remote, highly dynamic distributed applications for real-time monitoring, interaction and steering by geographically distributed scientists and engineers in a collaborative environment. The middleware substrate enables DISCOVER interaction and steering servers to dynamically discover and connect to one another to form a peer-to-peer network. This allows clients connected to their local servers to have global access to all applications and services across all the servers in the network based on their credentials, capabilities and privileges. The design and implementation of the DISCOVER middleware substrate builds on existing web servers and leverages commodity technologies and protocols such as CORBA and HTTP. Its goal is to enable rapid deployment, ubiquitous and pervasive access, and easy integration with 3rd party services, while evaluating the viability of these technologies for advanced Grid applications.
The overall aim of Grid computing is to enable collaborative and coordinated problem solving in dynamic, multi-institutional virtual organizations and it focuses on large-scale resource sharing, innovative applications, and high performance computing. The middleware substrate addresses one aspect of this general problem by providing global collaborative access to grid applications and services.
We also try to present a retrospective evaluation of our design and discuss its advantages and disadvantages. An evaluation of commodity distributed technologies and protocols and their ability to support Grid applications is also presented and some open issues and challenges are discussed.
[1]. V. Mann and M. Parashar, “Middleware Support for Global Access to Integrated Computational Collaboratories”, accepted for publication and presentation at the Tenth IEEE Symposium on High Performance Distributed Computing (HPDC-10), San Francisco, CA, August 2001. (PDF)
[2]. S. Kaur, V. Mann, V. Matossian, R. Muralidhar, M. Parashar, "Engineering a Distributed Computational Collaboratory", 34th Hawaii Conference on System Sciences, January 2001. (PDF)
Here are some screenshots of DISCOVER running on a compaq iPAQ handheld device:
The development was done using the Personal Java (for embedded systems) runtime environment. pJava supports most of JDK1.1.8's API calls. The User Interface components are from the Java AWT package. The obviously lightweight aspect of this application (DISCOVER Client) is a good example which characterizes the fact that the DISCOVER Server is the main actor taking care of all the processing and User/Application Communication allowing the client side to be very portable. |
|
Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer
