Java for High Performance Computing Jordi Garcia Almiñana 14 de Octubre de 1998 de la era post-internet.

Slides:



Advertisements
Similar presentations
1 Copyright © 2005, Oracle. All rights reserved. Introducing the Java and Oracle Platforms.
Advertisements

Java security (in a nutshell)
Lab Information Security Using Java (Review) Lab#0 Omaima Al-Matrafi.
JAVA Processors and JIT Scheduling. Overview & Literature n Formulation of the problem n JAVA introduction n Description of Caffeine * Literature: “Java.
The Java Language. Topics of this Course  Introduction to Java  The Java Language  Object Oriented Programming in Java  Exceptions Handling  Threads.
Java: History and Introduction (Lecture # 1). History… Java – Based on C and C++ – Developed in 1991 for intelligent consumer electronic devices – Green.
JETT 2003 Java.compareTo(C++). JAVA Java Platform consists of 4 parts: –Java Language –Java API –Java class format –Java Virtual Machine.
JVM-1 Introduction to Java Virtual Machine. JVM-2 Outline Java Language, Java Virtual Machine and Java Platform Organization of Java Virtual Machine Garbage.
Programming Languages Structure
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.
1 Software Testing and Quality Assurance Lecture 31 – SWE 205 Course Objective: Basics of Programming Languages & Software Construction Techniques.
Introduction to Java.
CSc 453 Interpreters & Interpretation Saumya Debray The University of Arizona Tucson.
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.
Lecture 1: Overview of Java. What is java? Developed by Sun Microsystems (James Gosling) A general-purpose object-oriented language Based on C/C++ Designed.
Java Security Updated May Topics Intro to the Java Sandbox Language Level Security Run Time Security Evolution of Security Sandbox Models The Security.
Intro to Java The Java Virtual Machine. What is the JVM  a software emulation of a hypothetical computing machine that runs Java bytecodes (Java compiler.
Embedded Java Research Geoffrey Beers Peter Jantz December 18, 2001.
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.
Introduction to Java CSIS 3701: Advanced Object Oriented Programming.
Java Security. Topics Intro to the Java Sandbox Language Level Security Run Time Security Evolution of Security Sandbox Models The Security Manager.
CSCI 224 Introduction to Java Programming. Course Objectives  Learn the Java programming language: Syntax, Idioms Patterns, Styles  Become comfortable.
Introduction to Java Kumar Harshit. Objectives ( 목적지 ) At the end of the lesson, the student should be able to: ● Describe the features of Java technology.
ICOM 5995: Performance Instrumentation and Visualization for High Performance Computer Systems Lecture 7 October 16, 2002 Nayda G. Santiago.
Java Virtual Machine Java Virtual Machine A Java Virtual Machine (JVM) is a set of computer software programs and data structures that use.
Implement High-level Program Language on JVM CSCE 531 ZHONGHAO LIU ZHONGHAO LIU XIAO LIN.
Java Introduction Lecture 1. Java Powerful, object-oriented language Free SDK and many resources at
Lecture 10 : Introduction to Java Virtual Machine
Introduction to the Java Virtual Machine 井民全. JVM (Java Virtual Machine) the environment in which the java programs execute The specification define an.
1 Module Objective & Outline Module Objective: After completing this Module, you will be able to, appreciate java as a programming language, write java.
O VERVIEW OF THE IBM J AVA J UST - IN -T IME C OMPILER Presenters: Zhenhua Liu, Sanjeev Singh 1.
1 Comp 104: Operating Systems Concepts Java Development and Run-Time Store Organisation.
University of Houston-Clear Lake Proprietary© 1997 Evolution of Programming Languages Basic cycle of improvement –Experience software difficulties –Theory.
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,
Programming Models & Runtime Systems Breakout Report MICS PI Meeting, June 27, 2002.
Java Virtual Machine Case Study on the Design of JikesRVM.
Introduction and Features of Java. What is java? Developed by Sun Microsystems (James Gosling) A general-purpose object-oriented language Based on C/C++
Java 2 security model Valentina Casola. Components of Java the development environment –development lifecycle –Java language features –class files and.
CPRG 215 Introduction to Object-Oriented Programming with Java Module 1-Introduction to Java Topic 1.1 Basics of Java Produced by Harvey Peters, 2008 Copyright.
National Taiwan University Department of Computer Science and Information Engineering National Taiwan University Department of Computer Science and Information.
Chapter 2: A Brief History Object- Oriented Programming Presentation slides for Object-Oriented Programming by Yahya Garout KFUPM Information & Computer.
Computer Programming 2 Why do we study Java….. Java is Simple It has none of the following: operator overloading, header files, pre- processor, pointer.
We will talking about story of JAVA language. By Kristsada Songpartom.
Getting started with Programming using IDE. JAVA JAVA IS A PROGRAMMING LANGUAGE AND A PLATFORM. IT CAN BE USED TO DELIVER AND RUN HIGHLY INTERACTIVE DYNAMIC.
CT1513 Introduction To java © A.AlOsaimi.
Core Java Introduction Byju Veedu Ness Technologies httpdownload.oracle.com/javase/tutorial/getStarted/intro/definition.html.
1. An Introduction A Programming Language A Technology Java Development Kit Java API One Language: Three Editions Standard Edition Enterprise Edition.
CSE 598c – Virtual Machines Survey Proposal: Improving Performance for the JVM Sandra Rueda.
JAVA Ekapap Julnonyang When it was implemented? Developed by Sun Microsystems. The first public implementation was Java 1.0 in 1995 The language.
Lesson 1 1 LESSON 1 l Background information l Introduction to Java Introduction and a Taste of Java.
The Execution System1. 2 Introduction Managed code and managed data qualify code or data that executes in cooperation with the execution engine The execution.
1 HPJAVA I.K.UJJWAL 07M11A1217 Dept. of Information Technology B.S.I.T.
Introduction to Programming 1 1 2Introduction to Java.
RealTimeSystems Lab Jong-Koo, Lim
Just-In-Time Compilation. Introduction Just-in-time compilation (JIT), also known as dynamic translation, is a method to improve the runtime performance.
Sung-Dong Kim, Dept. of Computer Engineering, Hansung University Java - Introduction.
Applications Active Web Documents Active Web Documents.
Object Oriented Programming in
Java™ 2 Platform Getting Started.
Before You Begin Nahla Abuel-ola /WIT.
Topic: Difference b/w JDK, JRE, JIT, JVM
Introduction Enosis Learning.
2.1. Compilers and Interpreters
Introduction Enosis Learning.
CSc 453 Interpreters & Interpretation
Chap 1. Getting Started Objectives
M S COLLEGE ART’S, COMM., SCI. & BMS
CSc 453 Interpreters & Interpretation
Presentation transcript:

Java for High Performance Computing Jordi Garcia Almiñana 14 de Octubre de 1998 de la era post-internet

Index of the Talk The Java Programming Language –Java for Scientific Computation –Java limitations for Scientific Computation The Java Runtime System –The Java Virtual Machine environment –Alternatives to the basic JVM specification Java for High Performance Computing –Definition of HPC language extensions for Java –Java restructurers, compilers, and optimizers –Parallel systems for High Performance Java

Java for High Performance Computing3 The Java Programming Languaje Features of Java –Object-Oriented environment –Platform independence –Network support –Security Runtime environment Secure remote transactions –Multithreading support –Automatic memory management –Fault tolerance through exception handling

Java for High Performance Computing4 The Java Programming Languaje Java for Scientific Computation –OO programming is preferable for design and maintainability Data type safety Automatic memory management (garbage collection) –Java arithmetic is fully protable (in other languages, loss of precission in float temporary expressions can give different results) –Truly portable threads and synchronization model –Portable libraries for distributed programming –GUI, programmer force, availability,...

Java for High Performance Computing5 The Java Programming Languaje Java Limitations for Scientific Computation –Java´s floating point restricted specification Limits exploitation of current and future chips architecture –No support to complex numbers –Internal implementation of arrays Non-consecutive memory layout scheme Multidimensional arrays implemented as arrays of arrays (no unrolling, loss of locality, …) Array boundary checking for every single array access –The Java run-time exception mechanism

Java for High Performance Computing6 The Java Programming Languaje Java Limitations for Scientific Computation –No support to high degrees of parallelism Parallel programming only through threads mechanism –No facility for explicit locality management –Other compiler related issues Unavailability of the complete program at compile time The exception mechanism limits code movement High level abstraction of JVM instruction set hides many machine dependent optimization opportunities

Java for High Performance Computing7 The Java Runtime System Java Virtual Machine: bytecode interpreter file.java javac Java virtual machine file.class Network? - Java source code application - Java to bytecode translation (performed only once) - Java bytecode class file (JVM instruction set) - Java Virtual Machine Specification - format of class files - semantics of instructions

Java for High Performance Computing8 The Java Runtime System Structure of the Java Virtual Machine –The JVM implementation can be tailored for high performance, low memory use, or portability dynamic class loader class verifier native method linker garbage collected heap file.class native methods standard classes execution engine java virtual machine operating system

Java for High Performance Computing9 The Java Runtime System Drawbacks of JVM: Speed! –Java bytecode is interpreted –Bytecode verification rules and exception mechanism –High-level structure about original program is lost –Local view during invocation of classes –Stack-based operands (no registers) Alternatives: –Just-in-time code generation –Java static compilation to native code –Java OS and Java Processors

Java for High Performance Computing10 The Java Runtime System Just-in-time Code Generation –Java bytecode to native object code on-the-fly –Just before the method is run for the first time –Based on the idea of inlining the machine code –Certain optimizations can be performed Elimination of redundant instructions Use hardware registers for local variables Optimization of method stack usage –However compilation speed requirements constrain the quality of the optimizations –Improvements over interpretation by a factor of 10!

Java for High Performance Computing11 The Java Runtime System Java Static Compilation to Native Code –Traditional resource-intensive optimization techniques can improve the performance of the generated code instruction schedulling common subexpression elimination inter-module analysis constant propagation global register allocation –Run time checking can be optimized or removed –…but portability and security can be lost!

Java for High Performance Computing12 The Java Runtime System Java OS –Java applications run directly on hardware platforms without requiring a host OS Java Processors –Hardware implementation of a Java interpreter –Chips created specifically to run Java bytecode Sun implementations: picoJava, microJava

Java for High Performance Computing13 Java for HPC Different levels of research file.java javac Java virtual machine file.class - Language extension - Mathematical libraries - Restructuring compiler - Bytecode optimization - JIT optimization techniques - Runtime parallel kernel library - Parallel Java Virtual Machine - Hardware Java implementations

Java for High Performance Computing14 Java for HPC HPC Language Extensions for Java –Language extension multidimensional arrays data parallel distributed loops communication primitives –Java numerical (matrix-oriented) libraries –Floating-point precission and complex numbers Other Java Dialects –Titanium: language and system for parallelism –Spar: semi-automatic parallel compilation

Java for High Performance Computing15 Java for HPC Java Restructurers –Source-to-source tools that extract parallelism (implicitly from loops or explicitly from annotations) Java Compilers –Java to parallel bytecode translation –Definition of IR for parallel optimization Bytecode Optimizers –Techniques for automatic detection of parallelism –Machine-dependent optimizations Just-in-time optimizations

Java for High Performance Computing16 Java for HPC Parallel Systems for HPC in Java –Parallel implementation of a JVM Programming based on SPMD Java Based on PVM or MPI implementations –Environment definition for network parallel programs Heterogeneous environment (run-time systems or parallel libraries) –Parallel sparse computation in Java Runtime environment with continuous compilation

Java for High Performance Computing17 The Survey Available (under construction) at URL: file:/usr/users.coderch/ac/jordig/pub/Java4HPC/main.html