Given by Geoffrey Fox at Invited Talk at ISCOPE 98, Santa Fe on Dec 10 98. Foils prepared Jan 1 99
Outside Index
Summary of Material
We give a poetic discussion of the Pragmatic Object Web and the nature of computer science and physics. |
We describe Java Grande -- definition, motivation and current status
|
The Java Grande Forum has numerical and distributed computing working groups and projects include
|
Discuss Java for Parallel Computing including message passing passing (MPI) and data parallelism |
Give example of implied multi tier service architecture |
Outside Index Summary of Material
ISCOPE Meeting Dec 8-11 1998 |
Geoffrey Fox |
Northeast Parallel Architectures Center |
Syracuse University |
111 College Place |
Syracuse NY |
gcf@npac.syr.edu |
http://www.javagrande.org |
http://math.nist.gov/javanumerics/ |
http://www.npac.syr.edu/users/gcf/iscopedec98 |
We give a poetic discussion of the Pragmatic Object Web and the nature of computer science and physics. |
We describe Java Grande -- definition, motivation and current status
|
The Java Grande Forum has numerical and distributed computing working groups and projects include
|
Discuss Java for Parallel Computing including message passing passing (MPI) and data parallelism |
Give example of implied multi tier service architecture |
Physics is governed by the elegant (in hope and practice) laws of Mother Nature and there is an absolute truth even if it can take a while to obtain the experimental evidence to isolate it
|
So (different) forms of elegant simple laws of computer science can and should be proposed by Knuth, Stepanov and Gosling etc but these cannot govern computing (as practiced in the real world) in the same way that Einstein's equations govern space-time
|
Rather computer science is rather the study of the large macroscopic system formed by interacting entities -- the users and developers of computers -- interacting in the heat bath formed by market forces.
|
Computer science is pragmatic and an art ...... |
In times gone by, we had rather stable heat baths associated with IBM/Digital, UNIX and Microsoft |
Note one can have false equilibria when temperatures are low and coupling is small -- if you don't believe me, run a Monte Carlo simulation or try to avoid a false minima in an heuristic optimization |
HPCC |
Loose Coupling! |
So it is important to know when we are near a critical point and about to change state -- such is a revolution and is typically associated with increasing temperature as interactions between base entities equilibrate the system |
The Web has caused the current stirring of the technology cauldron as we evolve to the Pragmatic Object Web or POW |
Traditional Industry CORBA |
Microsoft COM |
Sun Micro. Computer Science Java/RMI/JINI |
W3C The People XML HTTP-NG |
POW |
HPCC |
So the equilibrated POW will exhibit the
|
It may or may not be owned by Microsoft ... |
Note Java the language could survive while RMI is replaced by CORBA/XML servers (written in Java) using IIOP and HTTP-NG |
Note that while the four stakeholders interact in the market heat bath
|
So my goal is to gift the benefits of POW to scientific computing and to rescue physics by merging it with computer science (this is my Internetics talk on another day) |
In general, we will try to couple scientific computing/HPCC to the POW heat bath |
Majority of HPCC users (not perhaps ones at this conference) are still using unattractive programming environments with a programming model (explicit message passing) we thought crude 10 years ago
|
POW can provide wonderful base distributed computing technology on which we can base much better HPCC software
|
In particular, we focus on Java as this is likely to be a significant part of POW and there are serious difficulties in using it as is! |
First we think of a name for types of applications we wish to study |
Use of Java for: |
High Performance Network Computing |
Scientific and Engineering Computation |
(Distributed) Modeling and Simulation |
Parallel and Distributed Computing |
Data Intensive Computing |
Communication and Computing Intensive Commercial and Academic Applications |
HPCC Computational Grids ........ |
Very difficult to find a "conventional name" that doesn't get misunderstood by some community! |
These exist from both a computer science and user point of view |
Grande applications are very complex but field is small (1% or so of total computing world)
|
The field needs Java as it provides a wonderful distributed computing software infrastructure on which to build applications and tools
|
Not clear that Java needs the field and so Grande field needs to be humble and persuasive in its requests |
Currently the Grande field is intrigued but skeptical due to poor Java performance |
Java community doing battle in commercially critical areas |
Need to bring communities together |
The Java Language has several good design features
|
Java has a very good set of libraries covering everything from commerce, multimedia, images to math functions (under development at http://math.nist.gov/javanumerics) |
Java has best available electronic and paper training resources |
Children will learn Java (and other POW technologies) as it is a social language with natural graphical "hello world" |
Java is rapidly getting best integrated program development environments |
Java naturally integrated with network and universal machine supports potentially powerful "write once-run anywhere" model |
There is a large and growing trained labor force |
Can we exploit this in Grande Applications? |
So most existing Grande codes are written in Fortran or C with a clearly unattractive and comparatively unproductive programming environment |
These current languages and tools are sufficient but does not seem likely that can build much better environments around them
|
Five years ago, it looked as though C++ could become language of choice (perhaps with Fortran as inner core) but this appears stalled
|
So there is no competition -- Java is currently our only hope
|
It has some natural advantages due its internet base with threads and distributed computing built in |
It is a young language and we can take steps now to avoid unproductive proliferation of libraries and parallel constructs
|
It could have expressivity and object oriented advantages of C++ combined with performance levels of C and Fortran |
It can use its clear GUI advantages as an entrée into other aspects of Grande programming |
Geographically |
Distributed |
Grandecomputer |
Resources |
Enterprise |
Middleware |
Gateway |
System |
Geographically Distributed users |
and consultants |
1 |
2 |
3 |
Java Applets |
Java Language |
Java Servers |
Set of Workshops with increasing interest
|
Topics include compilation issues; applications; algorithms (math libraries); benchmarking; Java based programming environments(visualization); parallel computing and largest set of papers are in distributed systems |
Next meetings will at IPPS (April 99) and just before JavaOne 99 (Java developers conference) in June 99 to enhance interaction between Grande community and mainstream Java world |
Java Grande Forum to act as a focus for Grande community activities and coordinate the (feeble 1%) voice into mainstream! |
Java has potential to be a better environment for "Grande application development" than any previous languages such as Fortran and C++ |
The Forum Goal is to develop community consensus and recommendations for either changes to Java or establishment of standards (frameworks) for "Grande" libraries and services |
These Language changes or frameworks are designed to realize "best ever Grande programming environment" |
First Meeting Mar 1 Palo Alto at Java 98 -- 200 Attendees set Agenda -- 30 permanent people and further meetings May 9-10, Aug 6-7 |
Public Discussion SC98 Orlando November 13 (3 hour panel with some 250 attendees) where we released our first report (54 pages on web site) |
http://www.javagrande.org |
Report from the Numerics Working Group of the Java Grande Forum, Ron Boisvert NIST |
Report from the Applications and Concurrency Working Group of the Java Grande Forum, Dennis Gannon, Indiana University and NASA Ames |
Compilers and Performance of Java, Marc Snir, IBM |
Linear Algebra in Java, Cleve Moler , The MathWorks |
Building Libraries in Java, Jack Dongarra, University of Tennessee and Oak Ridge National Laboratory |
Lessons from C++, John Reynders, Los Alamos |
Application Experience in Oil Industry, Siamak Hassanzadeh, Sun |
Java Benchmarks, David Henty, Edinburgh Parallel Computing Center |
MPI for Java, Vladimir Getov, Westminster University England |
Java Framework for Computing Services (Desktop Access to Remote Resources), Gregor von Laszewski, Argonne National Laboratory |
1) Most important in the near term -- encourage Sun to make a few key changes in Java to allow it to be a complete efficient Grande Programming Language
|
2) As a community, recognize that sometimes standards are more appropriate than creativity and pool results of experiments to produce a Java Grande framework covering libraries and computer access
|
1) requires us to work with the computing mainstream -- 2) is internal to community |
Two major working groups promoting standards and community actions |
Numerics: Java as a language for mathematics led by Ron Boisvert and Roldan Pozo from NIST
|
Java Grande 98 Feb 28 98 |
So Java not only will run anywhere but can be expected to get same answers everywhere
|
Natural tension between performance (both in terms of speed and precision) and reproducibility
|
Java has particularly bad floating point performance due to
|
Solution requires "Change in Java Rules" and better compilers |
Design Goals/Requirements:
|
We propose three modes of floating point execution |
strictfp: Reproducible results as in current default |
new default: Exploit natural hardware (extended exponent in Intel and fused multiply add) |
associatefp: Allow conventional compiler optimizations |
with new Intel algorithm, strictfp will be a little more than 2 times slower than default; associatefp gains will be algorithm dependent (regular problems will have greatest gain) |
Less critical are following niceties: |
indigenous keyword specifies maximum precision format supported by hardware |
anonymous {float, double, indigenous} specifies floating point format to be used in calculating expressions
|
Also recommended IEEE floating point support library to get and set floating point flags and rounding modes |
Need to implement strictfp version of Java Math libraries |
Distributed and Parallel Computing led by Dennis Gannon and Denis Caromel (INRIA, France)
|
Development of Grande Application benchmarks |
So good news is that RMI has enabled very active distributed computing research and indeed development as in JavaSpaces from Sun |
Performance is reasonable but insufficient for some applications
|
Forum suggests (optional) changes in several areas including
|
JacORB |
JWORB |
ORBIX |
RMI |
Transmit |
Variable Size |
Integer Arrays |
Best |
Worst |
Array Size |
Java ORBs Transferring |
variable size Array of Structures |
(RMI slowed by serialization) |
RMI |
JacORB |
ORBIX, JWORB |
Best |
Worst |
Array Size |
Arrays of Integers C++ about 20 times faster than Java |
RMI (Fastest Java) omniORB (C++) |
Best |
Worst |
Array Size |
What is the Impact of Jini?
|
So real computer users are not so interested in fancy metacomputing but rather in being able to run their jobs in a seamless way that does not keep changing as backend computer resources are upgraded |
Viewing computing as a distributed (object) service, need to define a "Java Framework for Computing Services" |
This enables development of Web Interfaces to run a given job on any computer with any data source compliant with this framework just as JDBC gives a universal interface to any relational database
|
The Computing Services Framework will allow vendors to compete on either User Front End (GUI) or back end services with the JavaCS framework providing universal linkage |
Grande Resource Discovery, Allocation and Scheduling
|
We are defining methods and properties of computers and programs viewed as distributed objects
|
Compiling, Executing, Specification of features needed for execution optimization
|
Accounting -- integrate with Web commerce technology? |
Authentication, Security (especially hard in metacomputing as link several different management policies)
|
Desktop Access to Remote Resources |
http://www-fp.mcs.anl.gov/~gregor/datorr |
email datorr@mcs.anl.gov |
Oct 8-9 Meeting at Argonne and SC98 BoF |
Next Meeting perhaps Feb 15-16 at Sandia Albuquerque |
Collecting projects and abstracting requirements from user and system point of view |
Hope to suggest standards by SC99 |
mpiJava - Modelled after the C++ binding for MPI. Implementation through JNI wrappers to native MPI software. http://www.npac.syr.edu/projects/pcrc/HPJava/ |
JavaMPI - Automatic generation of wrappers to legacy MPI libraries. C-like implementation based on the JCI code generator. http://perun.hscs.wmin.ac.uk/JavaMPI/ |
MPIJ - Pure Java implementation of MPI closely based on the C++ binding. A large subset of MPI is implemented using native marshaling. http://ccc.cs.byu.edu/DOGMA/ |
Working on two MPI bindings for Java
|
Report on Java Grande Web Page http://www.javagrande.org |
mpiJava Performance |
C versus Java(J) |
WMPI PC with NT MPICH Sun Solaris |
Shared Memory |
PC using C |
Sparc using Java |
Best |
Worst |
mpiJava Performance |
C versus Java(J) |
WMPI PC with NT |
MPICH Sun Solaris |
Distributed Memory |
PC using C |
Sparc using Java |
Best |
Worst |
There are several forms of parallelism
|
In a Nutshell, Java is better than previous languages for a) and b) and no worse for c)
|
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 discussed how to use this with RMI (see WebFlow example) |
"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 (see work of Gannon's group)
|
Don't need to rewrite existing codes in Java!
|
Conduct suitable experiments in using Java in complete Grande applications |
Make certain your interests are represented in Java Grande Forum |
Does this change research agenda? (different types of compilers, service-based architectures, re-use commodity technologies -- don't roll your own with federal funds ...) |
Retrain your staff in Java Web and distributed object technologies |
Put "High Performance Grande Forum compliant" Java support into your RFP's for hardware and software |
Get your leaders ( Larry Smarr, Sid Karin, Gil Weigand, Andy White, Ken Kennedy ..) to support the Java Grande process |
Explain to Sun and JavaSoft why they should care |
Note it is NOT obvious that we will succeed ........ |
Help us collect Java Grande benchmarks
|
Work with community on standard classes and libraries |
Participate in establishing seamless computing framework by participation in DATORR process |
Participate in Java MPI process |
NPAC Project illustrating multi tier integration of POW with HPCC incorporating Java Applet Program Composition at Client |
DMSO HLA/RTI Compliance (FMS,IMT) |
CORBA COM Java Web Interoperable Middleware GLOBUS High Performance Backend inherits Commodity Services: Collaboration, Distributed Objects, Databases, Visualization ..... |
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
|
Currently testing support of 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(!) |
Client (Tier 1): Java Graph Editor for Webflow linked to interpreted debugger (DARP), Java Visualizer SciVis
|
Middle Tier 2: Network of Pragmatic Object Web 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
|
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 |
Original Image |
Output Image |
Some of |
Available Image Filters |
CLIENT Visual DataFlow |
Interface |
SERVER Processes Filters |
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) |
Database |
Matrix Solver |
Optimization Service |
MPP |
MPP |
Parallel DB Proxy |
NEOS Control Optimization |
Origin 2000 Proxy |
NetSolve Linear Alg. Server |
IBM SP2 Proxy |
Gateway |
Supporting Java |
Framework |
for |
computing |
Agent-based Choice of Compute Engine |
Multidisciplinary Control (WebFlow) |
Data Analysis Server |
Is this really |
sensible? |
Consider large class of problems that can be thought of a set of coarse grain entities which could be internally data parallel and the coarse grain structure is "functional or task" parallelism |
Use (Enterprise) JavaBeans to represent modules at (server) client level |
Use UML (and related technologies) to specify application and system structure |
WebFlow is graphical (Java Applet) composition palette (Beanbox for computational modules) |
Use "To be Agreed Seamless Computing Interface" to implement linkage of proxies to backend hardware |
We can support any given paradigm at either high functionality (web server) or high performance (backend) level |
HPCC Messaging could be a pure Java/RMI middle tier version of MPI or Nexus/Optimized Machine specific MPI at backend |
Coarse Grain Entities can be time synchronized simulations and use MPI(HPF?) at either middle or back end tier or as in DMSO simulations a federate running a custom discrete event simulation |
Use DMSO Object model HLA to specify object structure of jobs and systems at middle tier level |
A HLA Federation could be the set of all jobs to be run on a particular site
|
A HLA Federate could be a job consisting of multiple possibly shared objects |
Use DMSO Runtime Infrastructure RTI to implement dynamic management
|