Given by Geoffrey C. Fox at EuroPar Invited Presentation on September 4 1998. Foils prepared September 13 1998
Outside Index
Summary of Material
We discuss the Pragmatic Object Web (POW) and how to use it in the HPcc High Performance Commodity Computing based on POW with a hybrid multi-tier model |
We describe metacomputing and parallel computing based on these concepts |
We give examples of using WebFlow with Globus and show this gives natural integration of CORBA into HPCC |
The use of HLA/RTI as control of a bunch of workstations is recommended |
Outside Index Summary of Material
Invited Talk at Europar Conference Sept 4 98 |
Geoffrey Fox |
Northeast Parallel Architectures Center |
Syracuse University |
111 College Place |
Syracuse NY |
gcf@npac.syr.edu |
http://www.javagrande.org |
http://www.npac.syr.edu/users/gcf/europowsept98 |
We discuss the Pragmatic Object Web (POW) and how to use it in the HPcc High Performance Commodity Computing based on POW with a hybrid multi-tier model |
We describe metacomputing and parallel computing based on these concepts |
We give examples of using WebFlow with Globus and show this gives natural integration of CORBA into HPCC |
The use of HLA/RTI as control of a bunch of workstations is recommended |
Java becomes a better Grande (HPCC) programming environment than Fortran and C++ |
High speed networks become pervasively deployed |
Microsoft does not win -- some combination of IBM Sun Netscape (...) stops the advance of NT, COM, Internet Explorer, ChromeEffects ... |
The Web remains a creative open environment |
Supercomputers remain a small market but do not entirely disappear |
Technical computing (on supercomputers and below) continues to be important but problems become complex with linked databases and linked multiple disciplines |
HPCC has developed good research ideas but cannot implement them as solving computing's hardest problem with 1 percent of the funding
|
We have learnt to use commodity hardware either
|
Let us do the same with software and design systems with maximum possible commodity software basis |
The world is building a wonderful distributed computing (information processing) environment using Web (dissemination) and distributed object (CORBA COM) technologies |
This includes Java, Web-linked databases and the essential standards such as HTML(documents), VRML(3D objects), JDBC (Java database connectivity).
|
We will "just" add high performance to this commodity distributed infrastructure
|
The alternative strategy starts with HPCC technologies (such as MPI,HPF) and adds links to commodity world. This approach does not easily track evolution of commodity systems and so has large maintenance costs |
Bottom of Pyramid has 100 times dollar value and 1000 times compute power of best supercomputer |
Basic Vision: The current incoherent but highly creative Web will merge with distributed object technology in a multi-tier client-server-service architecture with Java based combined Web-ORB's |
Need to abstract entities (Web Pages, database entries, simulations) and services as objects with methods(interfaces)
|
COM(Microsoft) and CORBA(world) are competing cross platform and language object technologies
|
Javabeans plus RMI and JINI is 100% pure Java distributed object technology |
W3C says you should use XML which defines a better IDL and perhaps an object model -- certainly does for documents |
How do we do this while technology is still changing rapidly! |
Client Tier |
Javabean Enterprise Javabean |
Old and New Useful Backend Systems including MPP |
Back-end Tier |
Services |
Middle Tier |
Servers |
Need to use mix of approaches -- choosing what is good and what will last |
For example develop Web-based databases with Java objects using standard JDBC (Java Database Connectivity) interfaces
|
Even better use (Enterprise) Javabeans which are Java's (middle tier) or client componentware offering visual interfaces, containers (here they are consistent with CORBA standard) and standard software engineering interfacing rules
|
Use CORBA to wrap existing applications |
Confused? Read "Building Distributed Systems on the Pragmatic Object Web" -- Book of class I teach to CS/CE students at Syracuse http://www.npac.syr.edu/users/shrideep/book |
Documents -- URL |
"General Programs including database invocations"
|
Client |
Middle Tiers |
Back End |
Thin Client |
Old way: Use an Object Database |
Current Approach: Use a Relational Database and business logic in EJB |
Object Database |
Application using data objects |
Backend relational database such as Oracle |
Enterprise Javabean mapping user object to backend persistent data model |
Application using data objects |
Middle Tier |
W is Web Server |
PD Parallel Database |
DC Distributed Computer |
PC Parallel Computer |
O Object Broker |
N Network Server e.g. Netsolve |
T Collaboratory Server |
Clients |
Middle Layer (Server Tier) |
Third Backend Tier |
3-(or more)-tier architecture - Web browser front-ends, legacy (e.g. databases, HPC modules) backends; fat middleware |
Use as appropriate the alternative / competing Middleware models:
|
Each model has different tradeoffs (most elegant, powerful, fastest, simplest) |
POW attempts to integrate various models and services in terms of multi-protocol middleware servers (JWORB)
|
Distributed Computing becomes a commodity highly functional environment (driven by Object Web Technologies) |
Web/Commodity software (Pragmatic Object Web) - promising framework to build new HPcc (commodity computing) which can be applied to both metacomputing(computational grids), distributed simulation and parallel computing |
Note HTTP CORBA IIOP Java RMI etc. is not necessarily High Performance layer -- they are linked middleware proxies controlling MPI as optimized "machine code" |
HLA/RTI from distributed simulation community natural for coarse grain while PVM/MPI/HPF/.... natural for fine grain |
Note logical progression below which is opposite to some other approaches |
Applications are metaproblems with a mix of module and data parallelism |
Modules are decomposed into parts (data parallelism) and composed hierarchically into full applications.They can be the
|
Modules are "natural" message-parallel components of problem and tend to have less stringent latency and bandwidth requirements than those needed to link data-parallel components
|
Assume that primary goal of metacomputing system is to add to existing parallel computing environments, a higher level supporting module parallelism
|
Use Java/Distributed Object Technology for modules -- note Java to growing extent used to write servers for CORBA and COM object systems |
Multidisciplinary application as an example |
Essential idea is consider a three tier model
|
Preserve the first two tiers as a high functionality commodity information processing system and confine HPCC to the third (lowest) tier.
|
1)Simple Server Approach 2)Classic HPCC Approach |
Data and Control |
CFD |
Structures |
Data Only |
CFD Server |
Structures Server |
Control |
Only |
3)Hybrid Approach with control at server and |
data transfer at |
HPCC level |
Can switch at each mpi_init or at each MPI message |
4)Invoke High Performance Message Transfer between Observers and Sources specified in Message Event |
3)Source Callbacks Listener with Message Event |
Listener |
Source Control |
(proxy) |
1)Register Listeners |
with Master Source |
Server Tier |
Data Source |
Data Sink (Observers) |
5)Actual Data Transfer |
High Performance Tier |
2)Prepare |
Message Event in Source Control at middle or backend tier |
1)Register Observers with Listener |
NPAC Project illustrating multi tier Gateway incorporating Java Applet Program Composition at Client |
DMSO HLA/RTI Compliance (FMS,IMT) |
CORBA COM Java Web Interoperable Gateway GLOBUS High Performance Backend inherits Gateway Services: Collaboration, Distributed Objects, Databases, Visualization ..... |
Client (Tier 1): Java Graph Editor for Webflow linked to interpreted debugger (DARP), Java Visualizer SciVis
|
Middle Tier 2: Network of JWORB or Java Servers running on Gateway Tier linking to CORBA COM and HTTP(Internet)
|
Back-end Tier 3: Simple MPI or Globus (or similar) where available and where necessary |
Next foils show
|
Original Image |
Output Image |
Some of |
Available Image Filters |
CLIENT Visual DataFlow |
Interface |
SERVER Processes Filters |
Client Tier |
IIOP High Functionality |
Middle Tier |
Future Globus |
Globus |
Future Parallel I/O |
WebFlow |
server |
WebFlow |
server |
WebFlow |
server |
EDYS |
CASC2D |
Data Retrieval |
High Performance SubSystem |
CASC2D |
proxy |
IIOP |
Web Browser |
Data Wizard |
WMS interface |
Toolbar |
HTTP |
WMS |
File Transfer |
File Transfer |
GLOBUS |
Internet |
WebFlow modules |
(back-end) |
WebFlow |
middle-tier |
WebFlow applet |
(front-end) |
They are Java's implementation of "component-based" visual programming |
This modern software engineering technique produces a new approach to libraries which become a "software component infrastructure(SCI)" |
There is a visual interface to discovery of and setting of values of and information about parameters used in a particular software component |
JavaBeans uses the event model of JDK1.1 to communicate between components
|
One expects Javabeans to become the CORBA component interface |
The visual interface allows inspection of and implementation of both individual beans and their linkage . This visual construction of linkage allows one to form nontrivial programs with multiple communicating components
|
Apart from the event mechanism which is a communication/linkage mechanism, ComponentWare (and JavaBeans in particular) "just" give a set of universal rules (needed for interoperability) for rather uncontroversial (albeit good) object-oriented and visual programming practices
|
Currently WebFlow uses a Java Server and manipulates Java applications which can be front ends with native methods to Fortran C or C++ routines |
Change Java Server to JWORB -- server integrating HTTP and IIOP (Web and CORBA) |
Change Java Applications to JavaBeans and non-Java apps to CORBA objects |
Change linkage in WebFlow to respect JavaBean event mechanism |
Then we get HPComponentware |
And using our multi-tier model high performance CORBA |
WebFlow is HPCC version of a |
Typical Visual Interface for JavaBeans |
Clients and their servers |
Middle Tier Custom Servers |
Back End Servers and |
their services |
The backend servers would include CORBA objects from Educom's IMS projects; Video servers and Oracle database defined curricula pages from NPAC |
The front end servers would include distributed students with mirror sites to get performance |
In the middle tier, we have Collaboration Servers JDBC query processing and XML servlet parsers mapping original data in optimal fashion to match needs of student -- choosing from pure HTML or Interactive Java Whiteboard views of a given object
|
Educational Objects i.e. |
Data Defining Content of Curricula Pages |
Server side |
Java(JDBC) or |
LiveWire |
Metadata |
Web Server |
Conventional HTML Pages |
Dynamically Generated |
Including XML syntax Dublin Core (IMS) |
Web Browser |
XML Templates Defining How educational data stored in Pages |
We have multiple supercomputers in the backend -- one doing CFD simulation of airflow; another structural analysis while in more detail you have linear algebra servers (NetSolve); Optimization servers (NEOS); image processing filters(Khoros);databases (NCSA Biology workbench); visualization systems(AVS, CAVEs)
|
All linked to collaborative information systems in a sea of middle tier servers(as on following page) to support design, crisis management, multi-disciplinary research |
Database |
Matrix Solver |
Optimization Service |
MPP |
MPP |
Parallel DB Proxy |
NEOS Control Optimization |
Origin 2000 Proxy |
NetSolve Linear Alg. Server |
IBM SP2 Proxy |
Gateway Control |
Agent-based Choice of Compute Engine |
Multidisciplinary Control (WebFlow) |
Data Analysis Server |
High Performance Computing and Communication Tier |
Clients |
Gateway Systems |
Globus |
IIOP |
RMI |
HTTP |
Seamless Interface -- an Enterprise Javabean which processes input from user's Java Applet interface and maps user generic commands to those on specific machine
|
Resource management of heterogeneous MPP backend (linked to seamless interface) |
Database and Object Brokers; Network servers like Netsolve |
Collaboration Servers including Habanero, Tango, Lotus Notes ... |
Visualization Servers |
"Business Logic" to map user data view (e.g. objects) to persistent store (e.g. Oracle database) and simulation engine (MPP) preferred format |
The 90% of users who only need HPCC occasionally |
Most of a Command and Control Application |
Several FMS and IMT Applications |
Some I/O Intensive applications |
High value services with modest computational needs e.g. grid generation and other pre-processing, data manipulation and other post-processing |
Video Servers for Training |
Design and Planning Tools |
"Glue" for Multidisciplinary Interactions |
Control of Metacomputing applications |
JINI Java Resource Registration and Discovery Service |
DoD modeling and simulation (FMS,IMT) community is currently evolving towards the HLA(High level Architecture) framework with the RTI (Run Time Infrastructure) based communication bus. |
The goal of HLA/RTI is to enhance interoperability across more diverse simulators than in the DIS realm, ranging from real-time to time-stepped to event-driven paradigms. |
HLA defines a set of rules governing how simulators (federates) interact with each others. Federates describe their objects via Object Model Template (OMT) and agree on a common Federation Object Model (FOM). |
The overall HLA/RTI model is strongly influenced by the CORBA architecture and in fact the current prototype development is indeed CORBA based. |
Building HPCC on the Object Web implies that we can use a common framework for both distributed (event driven) simulations and classic time stepped parallel computing |
JWORB - Java Web Object Request Broker - multi-protocol middleware network server (HTTP + IIOP + DCE RPC + RMI transport) |
Current prototype integrates HTTP and IIOP i.e. acts as Web Server and CORBA Broker
|
Next step: add DCE RPC support to include Microsoft COM |
JWORB - our trial implementation of Pragmatic Object Web |
First non DMSO implementation of RTI -- HLA (distributed event driven simulation) Runtime at 5% cost(!) |
Implements DMSO RTI as JWORB service with 2 major CORBA objects: RTI Ambassador and Federate Ambassador |
Offers natural Web interfaces to HLA simulations via HTTP or IIOP channels |
Natural support for human-in-the-loop (Web surfers join WebHLA federation and can collaborate as WebHLA federates) |
Attractive model for High Level Metacomputing |
JacORB |
JWORB |
ORBIX |
RMI |
Variable Size Integer Arrays |
Java ORBs Transferring |
variable size Array of Structures |
(RMI slowed by serialization) |
RMI |
JacORB |
ORBIX, JWORB |
Arrays of Integers C++ about 20 times faster than Java |
RMI (Fastest Java) omniORB (C++) |
We can support any given paradigm at either high functionality (web server) or high performance (backend) level |
HPCC Messaging could be a Java/RMI middle tier MPI or Nexus/Optimized Machine specific MPI at backend |
JWORB supports CORBA based RTI already and we can bridge to high performance event driven simulation systems like SPEEDES at the high performance backend layer |
However most problems can be thought of a set of coarse grain entities which are internally data parallel but the coarse grain structure is "functional" parallelism |
So HLA/RTI is especially natural as tier 2 management level of these coarse entities |
Entities can be time synchronized simulations and use MPI(HPF?) at either middle or back end tier or in fact as in DMSO simulations a federate running a custom discrete event simulation |
Resource Management typically breaks down into either
|
So a) is all at middle tier and should use commodity solutions -- there are many queuing systems such as Condor, Codine, LSF which we can "wrap" and Microsoft does not yet have a fully scalable commodity solution
|
So it is still embryonic but we suggest adopting the HLA/RTI framework as this supports job placement, interdependencies (time management) and hierarchical systems of federations --> federates |
Optimized data placement has been largely solved as a mathematical problem by HPCC but not packaged broadly. Our suggestion suggests how to invoke as backend support for a commodity service |
HLA/RTI come with |
Declaration Management corresponds to publication and subscription model of matching services and needs
|
Time Management corresponds to scheduling of sequenced events in discrete event simulations -- it will allow support generally dependencies in jobs -- the CAVE visualization system must be used after simulation |
Data management is classic "load-balancing" problem of parallel computing where you map objects optimally to computers to minimize communication cost and load imbalance |
Provides uniform access to metacomputing and parallel computing built on sustainable commodity technologies |
HPcc ideas can be applied to either parallel or high-performance distributed computing (aka metacomputing) |
In metacomputing, HPcc fills a void as few high level tools |
In parallel computing, HPcc provides uniform and perhaps more attractive sustainable user environment |
Can view a parallel computer either as a single tier 2 object
|
Both are interesting
|
This is classic host-node computing model |
Host is logically distinct but can be on same machine as a "node" |
YES! If one uses the same separation between control and data transfer explained for metacomputing case |
Build a "bridge" that accepts MPI HTTP or CORBA invocation but invokes either the powerful slow CORBA mechanism or the nifty optimized MPI |
Why address nodes as CORBA? -- so you can build applications uniformly so they can access nodes and servers around the world in same message passing style |
Why address nodes with MPI? -- so you can get code that executes very fast! |
Why address nodes with HTTP? -- so you can get advantages of CORBA today as Web Servers dominate! |
Backend Parallel Computing Nodes running Classic HPCC -- MPI becomes Globus to use distributed resources |
Middle Control Tier -- JWORB runs on all Nodes |
Use separation of control and data transfer |
to support RTI(IIOP) on control layer and MPI |
on fast transport layer simultaneously |
Note Java will have similar performance to Fortran |
a)when Industry compilers mature b)if Sun accepts Java Grande recommendations |
The Web integration of Java gives it excellent "network" classes and support for message passing. |
Thus "Java plus message passing" form of parallel computing is actually somewhat easier than in Fortran or C. |
Coarse grain parallelism very natural in Java and we have described how to use this in HPcc |
"Data Parallel" languages features are NOT in Java and have to be added extending ideas from HPF and HPC++ etc
|
Java has built in "threads" and a given Java Program can run multiple threads at a time
|
Data parallelism important in High Performance scientific computing. |
Java must use same ideas as HPF HPC++ but details of language and experience can suggest a different implementation |
High level HPF programming model attractive, but implementations problematic and base language is Fortran! |
HPspmd model: Distributed array syntax, plus high-level class library bindings for communication and arithmetic on arrays.
|
In HPJava model, all communications go through explicit calls to user-level libraries, initially: |
Adlib: regular collective operations |
MPI: low-level message passing |
Later, add interfaces to other libraries, eg |
Global Arrays: 1-sided access to remote data |
CHAOS: irregular collective operations |
HPJava |
Procs p = new Procs1(4) ; |
Range x = new BlockRange(100,p.dim(0)); |
float [[,*]] a = |
new float [[x, 100]] on p ; |
float [[]] b = new float [[x]] on p ; |
HPF |
!HPF$ PROCESSOR P(4) |
!HPF$ DISTRIBUTE T(BLOCK) ONTO P |
REAL A(100,100) |
!HPF$ ALIGN A(:,*) WITH T(:) |
REAL B(100) |
!HPF$ ALIGN B(:) WITH T(:) |
Procs p = new Procs2(NP, NP) ; |
on(p) { |
Range x = new BlockRange(N, p.dim(0), 1) ; // ghost width 1 |
Range y = new BlockRange(N, p.dim(1), 1) ; // ... |
float [[,]] u = new float [[x, y]] ; |
for(int parity = 0 ; parity < 2 ; parity++) { // red and black |
Adlib.writeHalo(u, widths) ; // Communicate Ghost Cells |
overall(i = x [1 : N - 2]) |
overall(j = y [1 + (x.idx(i) + parity) % 2 : N - 2 : 2]) |
u [i, j] = 0.25 * (u [i - 1, j] + u [i + 1, j] + |
u [i, j - 1] + u [i, j + 1]) ; |
} |
} |
Hand translated Jacobi iteration (HPJava to Java). |
Compared with sequential Java, C++ and Fortran (-O optimization level). |
JDK 1.2Beta, JNI to Adlib, MPICH, Ultrasparc cluster |
As a program manager or user of scientific computers
|
As researchers, think of some better ideas aiming 5-10 years from now |
All of us -- defend the free world from Microsoft |