Enabling Technologies for PSE's

Ron Boisvert NIST (from Purdue)
Faisal Saied Illinois
Paul Wang Kent State
Sanjiva Weerawarana Purdue

Introduction

* Wang came from Macsyma project at MIT
* Weerawarana just got PhD from Purdue
* Enabling Technologies are techniques and tools which provide infrastructure for building PSE's
* One person's tool is another person's application!

Boisvert Presentation -I

* Components include:

- Integration
- Domain Expertise or domain specific subsystems
- User Interface

* Enablers exist at different levels

- Conceptual
- Arcitectural
- Procedural -- the actual implementation tools

Boisvert Presentation II

* ELLPACK used

- Linpack ITPACK etc
- Macro-processor and compiler-compiler -- both built especially for LINPACK

* What are most promising software archiectures for building PSE's?

Saied Presentation -- I

* MGLab is a set of Matlab functions that define an interactive multigrid solver environment

- generate results in Matlab's sparse matrix format
- Use Matlab visualization capabilities
- Design your own V cycle and choose smoother etc.

Saied Presentation -- II

* Matlab has high level language, simple library interface, sparse matrix , visualization and GUI development support
* Missing is 3D arrays, geometry and certain classes of algorithms
* but is extensible with symbolic, neural net, ODE, optimization, image processing toolkits.
* need visual programming voice natural language interfaces

Saied Presentation -- III

* need computational geometry

- solid modeling, mesh generation and adaptive mesh refinement

* scalable software libraries for important algorithms

- including automatic diffentiation
- THIS is in good shape!

* information technology

- look up solution!

* One person's PSE is another one's PSE enabler

- eg Saied used MATLAB as enabler of MGlab

Wang Presentation -- Issues I

* User Interface
* Kernel
* Domain Knowledge (data)base or expert
* Compute Servers -- Symbolic Numeric Graphics AI Database
* Help and Documentation
* Utilities -- Debugging and Performance Tuning

Wang Presentation -- Issues II

* Collection of Solution Procedures

- parallel algorithms

* Aids for Analysing problems

- identify approach

* Aid for preparing problem specific codes

- generate and later modify codes for complex target machines

* Parallel and Distributed Computing Implementation

Wang Presentation -- Needs

* Need flexible reusable numeric system and libraries
* reliable efficient symbolic server
* Expert knowledge based systems
* Connection Interface mechanism
* Parallel and Distributed operating Environments
* Automatic and User Assisted code genearation

- especially for parallel systems

Wang Presentation -- Exchange Issues

* Need to agree on interface between tools

- routine interface, control mechanisms, dataflow protocol

* Scientific data exchange protocols -- exchange formulae, different precision and number number types

- OPEN MATH
- Mathlink -- mathematica
- Iris -- Maple
- MPI -- Message Passing

Wang Presentation -- His Ideas MP

* Continues discussion of data exchange protocol
* MP(MultiProtocol) -- ICM/Kent which is glue between different forms of math data and uses "binary encoded parse trees" and sits

above transport layer

Wang Presentation -- Code Generation

* Capture Parallelism at high level before you lose information by coding in C Fortran etc.
* FINGER is finite element code generator
* PIER is parallel FEM system

Wang Presentation -- Summary

* Need to be object oriented
* PSE frameworks

- these seem to be templates

* PSE standards for data exchange
* PSE user interface standards

Weerawarana -- Overview

* GUI requires many person years! -- Interesting
* Claims languages are a complex issue but not obvious why

Weerawarana -- Needs

* Portable GUI Tools
* OLE OpenDoc CORBA
* ILU Polylith Glish IDL Software component integration using software bus or other models
* Object Oriented is natural as PSE's describe specific objects
* Embeddable (in existing C program) scripting languages such as Perl TCL
* Excutable content and Web Based PSE's -- Java Python

Weerawarana -- PSE Kernels

* Key things needed in building PSE's -- middleware

- from GUI, data management to scripting environment

* Purdue PSE kernel implements this

- Notebook -- missed item here!
- Software bus
- Utilities
- C++ and Web versions exist

* Java should not be used for applications but to invoke existing code in conventional languages