Given by Geoffrey C. Fox,Wojtek Furmanski at Int. Conf Parallel Computing Minneapolis et al. on Fall 96. Foils prepared 30 Sept 1996
Abstract * Foil Index for this file
Addon
We describe some of forces and issues which we suggest will lead to Java emerging as the dominant language for scientific and engineering computation. |
One Force is the new complex architectures expected for future high performance (petaflop) computers |
This implies that other aspects of the Web will become important and in particular Web Servers will be used as a network(web) of computer servers which will allow powerful integration of data and compute services as a "server-server" infrastructure
|
We discuss both intrinsic reasons why
|
This table of Contents
Abstract
Geoffrey Fox, Wojtek Furmanski
|
We describe some of forces and issues which we suggest will lead to Java emerging as the dominant language for scientific and engineering computation. |
One Force is the new complex architectures expected for future high performance (petaflop) computers |
This implies that other aspects of the Web will become important and in particular Web Servers will be used as a network(web) of computer servers which will allow powerful integration of data and compute services as a "server-server" infrastructure
|
We discuss both intrinsic reasons why
|
1)Classic solution of large scale PDE or Particle dynamics problem
|
2)Modest Grain size Functional Parallelism as seen in overlap of communication and computation in a node process of a parallel implementation.
|
3)Object parallelism seen in Distributed Simulation where "world" modelled (typically by event driven simulation) as set of interacting macroscopic (larger than grid points) objects
|
4)MetaProblems consisting of several large grain functionally distinct components such as
|
Java: 1) Not Supported, 2) is Thread mechanism, 3) is Java Objects or Applets, 4) is JavaBeans or equivalent |
Fortran: 1)is supported in HPF, 2--4) are not supported |
First the Caveat -- It is possible that Java will not "make it" but current momentum is hard to derail!
|
If Java is not the web language of future, then whatever replaces it must be better and our remarks should be applied to its replacement! |
Note that it is not clear if built-in thread mechanism of Java should be used in high performance implementation or "just" view as critical in supporting modest grain size functional parallelism (item 2)) within application
|
As we saw large scale Applications need many forms of parallelism and it is not needed/appropriate to use the same mechanism for each form
|
Thus Java needs (runtime and perhaps language) extension to support HPF/HPC++ like (shared memory model for programmer) data parallelism but "Java plus message passing" is already here
|
Java likely to be a dominant language as will be learnt and used by a broad group of users
|
Java may replace C++ as major system building language
|
Clearly Java can easily replace Fortran as a Scientific Computing Language as can be compiled as efficiently and has much better software engineering (object) and graphics (web) capabilities
|
Java can unify classic science and engineering computations with more qualitative macroscopic "distributed simulation and modelling" arena which is critical in military and to some extent industry |
Java is currently semi-interpreted and (as in Linpack online benchmark) is about 50 times slower than good C or Fortran
|
Java --> (javac)--> Downloadable Universal Bytecodes --> (Java Interpreter) |
--> Native Machine Code
|
However Language can be efficiently compiled with "native compilers" |
Java ----> (native compiler) |
---> Native (for Particular Machine) Code |
Lots of Interesting Compiler issues for both compiled and scripted Java |
Applications requires a range of capabilities in any language |
High level ("Problem Solving Environment") manipulating"large" objects
|
Intermediate level Compiled Code targetted at "sequential" (multi-threaded) architecture
|
Lower level runtime exploiting parallelism and memory hierarchies
|
One can use "native classes" which is just a predownloaded library of optimized runtime routines which can be high performance compiled Java, C, C++, Fortran, HPF etc. modules invoked by interpreted or compiled Java
|
Use Native Classes selectively for
|
In "WebWindows" Approach one naturally gets a Web Server and Client on every node
|
Several emerging technologies
|
Build initial experiments conservatively so insensitive to rapid evolution of Web |
Note Problem Solving Environments and "Forces Modelling" (Human/Instrument in the loop) applications require integration of computing and collaboration
|
Succesful examples:
|
Web Servers and HTTP are not as efficient as PVM/MPI daemons and their messaging but
|
Deploy Web technology first in education and in program development where high functionality of "Web Productivity Environment" is more important than performance |
Then run production in classic "bare-bones" HPCC environment |
Internet is quite slow and getting slower but in fact many Web activities focus on IntraNets -- domain and perhaps geographically specialized hardware running pervasive Web Softwate
|
Superficially one can state goal as adding to the distributed computing model of the Web, the HPCC lessons and algorithms needed for high performance and tight synchronization of multiple servers and clients (Web is typically loose coarse grained coupling).
|
http://kestrel1.npac.syr.edu:6151/vpl/ (Kivanc Dincer) |
Allows one to specify program from Web Client, Invoke HPF Compiler and excute on a chosen set of networked Workstations |
Implemented as a network of HTTPD Web Servers using CGI scripts which replace PVM daemons and invoke communication implemented by modifying PVM software |
Supports HPF and Global Arrays (Chemistry full matrix primitives developed at Pacific NorthWest Lab)
|
Will be used in Virtual Workshop (Cornell) and Fox's introductory computational Science class this fall CPS615
|
Have implemented a large(16) number of Java Applets interfacing to SDDF (Self-Defining Data Format), provided by Pablo Performance Analysis Environment, developed at UIUC by CRPC Associate Dan Reed |
Running Node Program --> SDDF Performance Monitoring Data --> Web server |
which can be accessed by full set of Web Tools including
|
see: http://www.npac.syr.edu/users/dincer/pablo/ |
Will add Java "wrapper" to HPF data-structures so can use Java for scientific visualization of applications that run in HPF |
This illustrates how use of the rich Web information improves HPCC programming environment for easy linkage of databases and logging and display of scientific and performance visualization |
We can use Java as an interface to to a Web-implemented simulation linking to either Server or Client |
Java is a convenient User Interface builder which allows one to develop |
quickly customized Interfaces
|
This gives AVS and Khoros like environments |
As part of black hole Grand Challenge, we are designing an interface to adaptive mesh (AMR) "Problem Solving environment" |
As Java lies "inbetween" Fortran and C++, one can expect that data parallel Java can learn from corresponding HPF and HPC++ studies |
"Parallel Compiler Runtime Consortium" produced a very rough draft
|
Java does not support templates and STL approach of C++ not so natural |
Need to recognize that performance of Objects in Java poorer than that of "simple types" |
Java spans high level interpreted objects to low level optimally compiled "simple types" |
We have proposed an approach which uses native classes for "compiler runtime" and follows an HPF style with an interpreted front-end like Matlab or APL or "host" programming model as in *LISP on CM-2 |
e.g. A = HParray.matmul(B,C)
|
This leads again to Java wrappers invoked by HPF-style Java(Script) interpreter which interfaces to native HPF or other implementations.
|
Establish bottom-up constituency by teaching Java in Middle and High Schools |
Start working groups/meetings to study requirements and issues
|
Build Prototype Web Coarse Grain Computing Environments
|
Design and build "Java Wrappers" to both sequential and parallel Fortran77/90
|
Link above technologies in the WebWindows Programming Laboratory
|
Build Expertise/Infrastructure on High Performance Optimizing Java Compilers aiming at data structures of importance to Science! |
Collaborate with Web/Compiler groups in China .... |
December 16-17, 1996 |
Syracuse New York |
Geoffrey Fox |
NPAC |
111 College Place |
Syracuse |
NY 13244-4100 |
Java will become a very popular and perhaps dominant language for scientific and engineering computation
|
Web Technology will be basis of many software systems (WebWindows) and in particular scientific computing environments
|
Some of us should focus attention on Java and not worry so much about Fortran and C++ even though these will be doiminant in immediate future |
Technical computing has always suffered as too small to get substantial industry attention |
Sun and others will focus on more lucrative Java applications |
Technical community needs to ensure their concerns/requirements in Java language and environments are heard |
Need to establish a framework in which reseaerch in such a new area will be funded by federal government
|
Initial attempt at a white paper in May 96 of marginal success as no agreement among participants as to role of Java
|
Birds of a Feather Session at Supercomputing 96 saw agreement on new theme |
mailing list java-for-cse@npac.syr.edu |
Enroll at http://www.npac.syr.edu/projects/javaforcse |
This workshop is to air technical issues and publish as special issue of journal "Concurrency: Practice and Experience" (edited by Fox) |
Need to interact with Java juggernaut with a White Paper on Java for technical computing and other ways! |
MPI (or equivalent message passing) done either as "pure Java" or as native class interface |
Threads allow overlap of communication and computation |
Higher Level Libraries such as those of DAGH (Adaptive Mesh Support) or PCRC (Compiler Runtime) |
Build in capabilities with classes designed for "ghost region" support etc. |
Parallel C++ approach (Standard Template Libraries etc.) does not work
|
Could copy HPF directive approach but as this requires major compiler development, this does not seem appropriate in near future
|
In particular can use this with Java threads running on SMP as target i.e. use Java runtime to get parallelism automatically if we spawn appropriate threads |
This work can be done on .class (Bytecode) or .java (Java language) files |
Interpreted but limited (in functionality) Java client interface to Java wrapped HPF/C++ (not necessarily and perhaps best not parallel Java)
|
Note that we avoid many difficulties but lose elegance as we exchange information between the Host and running Parallel code using "text strings" |
Host and parallel node "synchronize" object reference by registering names with the communication broker |
This does not necessarily need one to use Java native class linkage to Fortran and C -- rather just to be able to send messages between running programs |
PreProcessors Can make this more "automatic"
|
More generally should study link between interpreted and compiled environments
|
Need an Interpreted Java -- JavaScript is interpreted but in limited domain |
One can identify both decomposition and integration as key parts of parallel (high performance) computing |
Thus in HPF, we have distribute to address decomposition and the compiler uses MPI or equivalent to integrate |
Java brings objects and threads to help decomposition |
Java servers and applets really address integration and the greatest power of Web is in integration -- not decomposition
|
WebFlow approach with Java Servers supporting metacomputing
|
Java suggests new approaches to distributed Event Driven Simulations
|
As usual most things work for "embarassingly parallel" problems when integration and decomposition coincide. |