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