JavaGrande Forum: An Overview Vladimir Getov University of Westminster.

Slides:



Advertisements
Similar presentations
Introduction To Java Objectives For Today â Introduction To Java â The Java Platform & The (JVM) Java Virtual Machine â Core Java (API) Application Programming.
Advertisements

MPJava : High-Performance Message Passing in Java using Java.nio Bill Pugh Jaime Spacco University of Maryland, College Park.
GridRPC Sources / Credits: IRISA/IFSIC IRISA/INRIA Thierry Priol et. al papers.
The road to reliable, autonomous distributed systems
Java: History and Introduction (Lecture # 1). History… Java – Based on C and C++ – Developed in 1991 for intelligent consumer electronic devices – Green.
Java for High Performance Computing Jordi Garcia Almiñana 14 de Octubre de 1998 de la era post-internet.
MPJava : High-Performance Message Passing in Java using Java.nio Bill Pugh Jaime Spacco University of Maryland, College Park.
1 Java Grande Introduction  Grande Application: a GA is any application, scientific or industrial, that requires a large number of computing resources(CPUs,
CS884 (Prasad)Java Goals1 “Perfect Quote” You know you've achieved perfection in design, Not when you have nothing more to add, But when you have nothing.
M.S. Thesis Defense Comparing The Performance Of Distributed Shared Memory And Message Passing Programs Using The Hyperion Java Virtual Machine On Clusters.
Sameer Shende, Allen D. Malony Computer & Information Science Department Computational Science Institute University of Oregon.
Session-02. Objective In this session you will learn : What is Class Loader ? What is Byte Code Verifier? JIT & JAVA API Features of Java Java Environment.
L EC. 01: J AVA FUNDAMENTALS Fall Java Programming.
01 Introduction to Java Technology. 2 Contents History of Java What is Java? Java Platforms Java Virtual Machine (JVM) Java Development Kit (JDK) Benefits.
Introduction to Java Programming. Contents 1. Java, etc. 2. Java's Advantages 3. Java's Disadvantages 4. Types of Java Code 5. Java Bytecodes 6. Steps.
Java Introduction 劉登榮 Deng-Rung Liu 87/7/15. Outline 4 History 4 Why Java? 4 Java Concept 4 Java in Real World 4 Language Overview 4 Java Performance!?
JAVA v.s. C++ Programming Language Comparison By LI LU SAMMY CHU By LI LU SAMMY CHU.
Java Security. Topics Intro to the Java Sandbox Language Level Security Run Time Security Evolution of Security Sandbox Models The Security Manager.
Performance evaluation of Java for numerical computing Roldan Pozo Leader, Mathematical Software Group National Institute of Standards and Technology.
Numeric and Performance Issues of Java Roldan Pozo Leader, Mathematical Software Group National Institute of Standards and Technology.
1 Developing Native Device for MPJ Express Advisor: Dr. Aamir Shafi Co-advisor: Ms Samin Khaliq.
Programming Fundamentals 2: Background/ F II Objectives – –give a non-technical overview of Java Semester 2, Background.
1b.1 Types of Parallel Computers Two principal approaches: Shared memory multiprocessor Distributed memory multicomputer ITCS 4/5145 Parallel Programming,
Why Java? A brief introduction to Java and its features Prepared by Mithat Konar.
CS 390- Unix Programming Environment CS 390 Unix Programming Environment Topics to be covered: Distributed Computing Fundamentals.
Crossing The Line: Distributed Computing Across Network and Filesystem Boundaries.
Chapter 34 Java Technology for Active Web Documents methods used to provide continuous Web updates to browser – Server push – Active documents.
1 Module Objective & Outline Module Objective: After completing this Module, you will be able to, appreciate java as a programming language, write java.
©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 13 Java on Various Computer Platforms.
SUMA: A Scientific Metacomputer Cardinale, Yudith Figueira, Carlos Hernández, Emilio Baquero, Eduardo Berbín, Luis Bouza, Roberto Gamess, Eric García,
HPCA2001HPCA Message Passing Interface (MPI) and Parallel Algorithm Design.
JAVA Java is a programming language and computing platform first released by Sun Microsystems in It was first developed by James Gosling at Sun Microsystems,
BLU-ICE and the Distributed Control System Constraints for Software Development Strategies Timothy M. McPhillips Stanford Synchrotron Radiation Laboratory.
Systems and Environments for High Performance Java Computing Vladimir Getov 4 January 2006.
G-JavaMPI: A Grid Middleware for Distributed Java Computing with MPI Binding and Process Migration Supports Lin Chen, Cho-Li Wang, Francis C. M. Lau and.
Ch 1. A Python Q&A Session Spring Why do people use Python? Software quality Developer productivity Program portability Support libraries Component.
Evaluation of Agent Teamwork High Performance Distributed Computing Middleware. Solomon Lane Agent Teamwork Research Assistant October 2006 – March 2007.
Performance Analysis Of Generics In Scientific Computing Laurentiu Dragan Stephen M. Watt Ontario Research Centre for Computer Algebra University of Western.
Forschungszentrum Informatik, Karlsruhe Michael Philippsen and the JavaParty Team Faster Serialization and Faster RMI for Java Universität Karlsruhe and.
Atlas Graphics Group MeetingDec, 1 The Colt Distribution - Open Source Libraries for High Performance Scientific and Technical.
04 June Thoughts on a Java Reference Implementation for MPJ Mark Baker *, Bryan Carpenter  * University of Portsmouth  Florida.
1CPSD Software Infrastructure for Application Development Laxmikant Kale David Padua Computer Science Department.
JAVA AND MATRIX COMPUTATION
Hwajung Lee.  Interprocess Communication (IPC) is at the heart of distributed computing.  Processes and Threads  Process is the execution of a program.
Distributed Components for Integrating Large- Scale High Performance Computing Applications Nanbor Wang, Roopa Pundaleeka and Johan Carlsson
Java: An Overview John R Durrett Texas Tech University.
Linear Algebra Libraries: BLAS, LAPACK, ScaLAPACK, PLASMA, MAGMA
CSI 3125, Preliminaries, page 1 SERVLET. CSI 3125, Preliminaries, page 2 SERVLET A servlet is a server-side software program, written in Java code, that.
13/11/98Java Grande Forum1 MPI for Java Bryan Carpenter, Vladimir Getov, Glenn Judd, Tony Skjellum, Geoffrey Fox and others.
Methods and Systems for High Performance Computing with Java Vladimir Getov 12 June 2006.
Wide-Area Parallel Computing in Java Henri Bal Vrije Universiteit Amsterdam Faculty of Sciences vrije Universiteit.
SDM Center High-Performance Parallel I/O Libraries (PI) Alok Choudhary, (Co-I) Wei-Keng Liao Northwestern University In Collaboration with the SEA Group.
Duke CPS Java: make it run, make it right, make it fast (see Byte, May 1998, for more details) l “Java isn’t fast enough for ‘real’ applications”
1 HPJAVA I.K.UJJWAL 07M11A1217 Dept. of Information Technology B.S.I.T.
Programming Parallel Hardware using MPJ Express By A. Shafi.
20-753: Fundamentals of Web Programming Copyright © 1999, Carnegie Mellon. All Rights Reserved. 1 Lecture 15: Java Basics Fundamentals of Web Programming.
Sung-Dong Kim, Dept. of Computer Engineering, Hansung University Java - Introduction.
Computer System Structures
Object Oriented Programming in
Client-Server Communication
Remote Function Invocation
Java Distributed Object System
Before You Begin Nahla Abuel-ola /WIT.
Introduction Enosis Learning.
Introduction Enosis Learning.
Pluggable Architecture for Java HPC Messaging
MPJ: A Java-based Parallel Computing System
F II 1. Background Objectives
Presentation transcript:

JavaGrande Forum: An Overview Vladimir Getov University of Westminster

Background Observations Java thread model is insufficient Java thread model is insufficient Message Passing model is important to support Message Passing model is important to support Performance is critical Performance is critical –Many applications need “high” performance Proper numerical computing Proper numerical computing –Complex, arrays, performance, reproducibility

Background main motivation - need to solve bigger problems with resource requirements beyond the current limits main motivation - need to solve bigger problems with resource requirements beyond the current limits recent advances in computer communications make it possible to couple geographically distributed resources - Grid computing recent advances in computer communications make it possible to couple geographically distributed resources - Grid computing in contrast with low-level approaches Java can support a single object-oriented communication framework for Grande applications in contrast with low-level approaches Java can support a single object-oriented communication framework for Grande applications

Java Grande Forum (JGF) grande applications † Goal: make Java the best ever environment for grande applications † Open to all:.com,.edu,.gov Established March 1998 Conferences, working groups † e.g. large-scale, large-distance, resource-”hungry”

Getting Better Performance native methods (JNI) stand-alone compliers (.java ->.exe) modified JVMs – fused mult-adds, bypass array bounds checks aggressive bytecode optimization – JITs, flash compilers, HotSpot bytecode transformers parallel Java and concurrency

SciMark Benchmark five key numerical kernels –fast Fourier transform –successive over-relaxation (SOR) –Monte Carlo integration –sparse matrix multiply –dense LU factorization two sizes: in cache and out-of-cache run as applet; Java, C source available results in Mflop/s; posted on SciMark page

SciMark 2.0 By Platform

JVMs Are Improving SciMark : 333 MHz Sun Ultra 10

SciMark: C Beats Java Sun UltraSPARC 60, Sun JDK 1.3 (HotSpot), javac -0; Sun cc -0; SunOS 5.7

SciMark: Java Beats C Intel PIII, 500 MHz, Win98, Sun JDK 1.2, javac -0; Microsoft VC++ 5.0, cl -0; Win98

Multidimensional arrays In Java an “n-dimensional array” is equivalent to a one-dimensional array of (n - 1)-dimensional arrays. In the proposal, message buffers are always one-dimensional arrays, but element type may be an object, which may have array type - hence multidimensional arrays can appear as message buffers.

Java multidimensional arrays Array of Arrays

Java multidimensional arrays Java multidimensional arrays are not indivisible objects: could have intra-array aliasing and "partial overlaps" with other arrays

Java in Distributed Computing main motivation - need to solve bigger problems with resource requirements beyond the current limits main motivation - need to solve bigger problems with resource requirements beyond the current limits recent advances in computer communications make it possible to couple geographically distributed resources - Grid computing recent advances in computer communications make it possible to couple geographically distributed resources - Grid computing in contrast with low-level approaches Java can support a single object-oriented communication framework for Grande applications in contrast with low-level approaches Java can support a single object-oriented communication framework for Grande applications

Roadmap of Communication Frameworks

Message Passing - Motivation The existing communication packages in Java - RMI, API to BSD sockets - are optimized for Client/Server programming The existing communication packages in Java - RMI, API to BSD sockets - are optimized for Client/Server programming The symmetric model of communication is captured in the MPI standard - MPI-1 and MPI-2 The symmetric model of communication is captured in the MPI standard - MPI-1 and MPI-2 An MPI-like message-passing API specification is needed to enable the development of portable JavaGrande applications An MPI-like message-passing API specification is needed to enable the development of portable JavaGrande applications

Early MPI-like Efforts - 1 mpiJava - Modeled after the C++ binding for MPI. Implementation through JNI wrappers to native MPI software. mpiJava - Modeled after the C++ binding for MPI. Implementation through JNI wrappers to native MPI software. JavaMPI - Automatic generation of wrappers to legacy MPI libraries. C-like implementation based on the JCI code generator. JavaMPI - Automatic generation of wrappers to legacy MPI libraries. C-like implementation based on the JCI code generator. MPIJ - Pure Java implementation of MPI closely based on the C++ binding. A large subset of MPI is implemented using native marshaling of primitive Java types. MPIJ - Pure Java implementation of MPI closely based on the C++ binding. A large subset of MPI is implemented using native marshaling of primitive Java types.

Early MPI-like Efforts - 2 JMPI - MPI Soft Tech Inc. have announced a commercial effort under way to develop a message passing environment for Java. JMPI - MPI Soft Tech Inc. have announced a commercial effort under way to develop a message passing environment for Java. Others Others Current ports - Linux, Solaris (both WS clusters and SMPs), AIX (both WS clusters and SP2), Windows NT clusters, Origin-2000, Fujitsu AP3000, and Hitachi SR2201. Current ports - Linux, Solaris (both WS clusters and SMPs), AIX (both WS clusters and SP2), Windows NT clusters, Origin-2000, Fujitsu AP3000, and Hitachi SR2201. Java + MPI codes - growing variety including full applications Java + MPI codes - growing variety including full applications

MPJ API Specification First phase in our work on Message Passing for Java. First phase in our work on Message Passing for Java. Builds on MPI-1 Specification and the current Java Specification. Builds on MPI-1 Specification and the current Java Specification. Immediate standardization for common message passing programs in Java Immediate standardization for common message passing programs in Java Basis for conversion between C, C++, Fortran and Java. Basis for conversion between C, C++, Fortran and Java. Eventually, support for aspects of MPI-2 as well as possible improvements to the Java language. Eventually, support for aspects of MPI-2 as well as possible improvements to the Java language.

Naming Conventions All MPI classes belong to the package mpi. Conventions for capitalization, etc, in class and member names generally follow the recommendations of Sun's Java code conventions consistent with the MPI C++ binding

Error codes Unlike the C and Fortran interfaces, the Java interfaces to MPI calls will not return explicit error codes. Instead, the Java exception mechanism will be used to report errors

O-O Java-Centric Message Passing Current task - to offer a first principles study of MPI-like services in an upward compatible fashion Current task - to offer a first principles study of MPI-like services in an upward compatible fashion Goal - performance and portability Goal - performance and portability Fundamental look at data marshaling Fundamental look at data marshaling Preference for Java-natural mechanisms Preference for Java-natural mechanisms

MPJ-Related Documents and URLs E-discussion - or e- mail E-discussion - or e- mail MPJ API Specification - MPJ API Specification - mpiJava - MPJ reference implementation mpiJava - MPJ reference implementation

Mixed-Language Programming with Java Java is a highly-portable language Java adheres to the “Write once, run anywhere” philosophy Java has a well-established collection of scientific library bindings Java’s executional speed is suitable for HPC C/Fortran are highly-portable languages C/Fortran adhere to the “Write once, run anywhere” philosophy C/Fortran have well-established scientific libraries C/Fortran executional speeds are suitable for HPC

So, What Language to Use? Java is a highly-portable language Java adheres to the “Write once, run anywhere” philosophy C/Fortran have well-established scientific library bindings C/Fortran executional speeds are suitable for HPC Utilize Java for its portability and standardization, but focus on using Java as a wrapper for porting of native code in the form of shared libraries. This involves the least amount of work and guarantees maximum performance on different platforms.

JCI Block Diagram

Legacy libraries bound to Java so far

Mixed-language programming based on JVM

Ping-Pong Timings

Stand-alone IBM compiler

NPB IS kernel on IBM SP2

Serialization and RMI are too slow for Grande Applications: Serialization and RMI are too slow for Grande Applications: Improvements are needed in three areas: Improvements are needed in three areas: –Faster serialization for Java –Faster RMI for Java –Use of non-TCP/IP networks with RMI JavaParty project works on all three areas JavaParty project works on all three areas Fast RMI - Motivation

Faster Serialization: UKA-Serialization Drop-in replacement (plus class file retrofitter) Drop-in replacement (plus class file retrofitter) Save 76%-96% of the time needed for serialization Save 76%-96% of the time needed for serialization Minor incompatibilities: Minor incompatibilities: –targeted towards fast communication, not made for persistent objects (store objects now and reload them in x years with some future release of Java) –not yet: remote loading of byte code Some impact on Sun Some impact on Sun

Faster RMI: KaRMI Drop-in replacement with almost the same API Drop-in replacement with almost the same API Can exploit non-TCP/IP networks Can exploit non-TCP/IP networks Saves up to 96% of the time needed for a remote method invocation (including UKA serialization): 80ms on Digital Alphas connected by Myrinet Saves up to 96% of the time needed for a remote method invocation (including UKA serialization): 80ms on Digital Alphas connected by Myrinet Minor incompatibilities: Minor incompatibilities: –no sockets & ports at user-level –no support of undocumented RMI classes Some impact on Sun Some impact on Sun

Benchmark Results

Programming Models SPMD SPMD –mutithreading on SMPs or clusters (fat JVMs) –symmetric message passing on clusters Client-Server Client-Server –RMI –JINI Peer-to-Peer Peer-to-Peer –JXTA and others Mobile agents Mobile agents Components Components