1 Java Grande Introduction  Grande Application: a GA is any application, scientific or industrial, that requires a large number of computing resources(CPUs,

Slides:



Advertisements
Similar presentations
Pointers.
Advertisements

An Overview Of Virtual Machine Architectures Ross Rosemark.
Data Structures Static and Dynamic.
879 CISC Parallel Computation High Performance Fortran (HPF) Ibrahim Halil Saruhan Although the [Fortran] group broke new ground …
VLIW Very Large Instruction Word. Introduction Very Long Instruction Word is a concept for processing technology that dates back to the early 1980s. The.
Names and Bindings.
Chapter 7:: Data Types Programming Language Pragmatics
A Review. a review of lessons learned so far… ( 2 steps forward - 1 step back) Software Development Cycle: design, implement, test, debug, document Large.
6/10/2015C++ for Java Programmers1 Pointers and References Timothy Budd.
Intermediate code generation. Code Generation Create linear representation of program Result can be machine code, assembly code, code for an abstract.
Chapter 2: Algorithm Discovery and Design
Java for High Performance Computing Jordi Garcia Almiñana 14 de Octubre de 1998 de la era post-internet.
Programming Language Semantics Java Threads and Locks Informal Introduction The Java Specification Language Chapter 17.
Reference Book: Modern Compiler Design by Grune, Bal, Jacobs and Langendoen Wiley 2000.
1/28/2004CSCI 315 Operating Systems Design1 Operating System Structures & Processes Notice: The slides for this lecture have been largely based on those.
Chapter 2: Impact of Machine Architectures What is the Relationship Between Programs, Programming Languages, and Computers.
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science Computer Systems Principles C/C++ Emery Berger and Mark Corner University of Massachusetts.
Chapter 2: Algorithm Discovery and Design
Chapter 2: Algorithm Discovery and Design
Language Issues Misunderstimated? Sublimable? Hopefuller? "I know how hard it is for you to put food on your family.” "I know the human being and fish.
Peter Juszczyk CS 492/493 - ISGS. // Is this C# or Java? class TestApp { static void Main() { int counter = 0; counter++; } } The answer is C# - In C#
Software Design & Development Software Design & Development Programming Types Event Driven Programming Event driven programming Is a type of programming.
Chapter 1 Algorithm Analysis
Learners Support Publications Pointers, Virtual Functions and Polymorphism.
Arpit Jain Mtech1. Outline Introduction Dalvik VM Java VM Examples Comparisons Experimental Evaluation.
Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 1 Chapter 1 Introduction to Computer Science.
CS 403: Programming Languages Lecture 2 Fall 2003 Department of Computer Science University of Alabama Joel Jones.
IT253: Computer Organization Lecture 4: Instruction Set Architecture Tonga Institute of Higher Education.
DEPARTMENT OF COMPUTER SCIENCE & TECHNOLOGY FACULTY OF SCIENCE & TECHNOLOGY UNIVERSITY OF UWA WELLASSA 1 CST 221 OBJECT ORIENTED PROGRAMMING(OOP) ( 2 CREDITS.
Computer Systems Organization CS 1428 Foundations of Computer Science.
Multithreading in Java Project of COCS 513 By Wei Li December, 2000.
Roopa.T PESIT, Bangalore. Source and Credits Dalvik VM, Dan Bornstein Google IO 2008 The Dalvik virtual machine Architecture by David Ehringer.
CS 147 June 13, 2001 Levels of Programming Languages Svetlana Velyutina.
Introduction and Features of Java. What is java? Developed by Sun Microsystems (James Gosling) A general-purpose object-oriented language Based on C/C++
Silberschatz, Galvin and Gagne  2002 Modified for CSCI 399, Royden, Operating System Concepts Operating Systems Lecture 7 OS System Structure.
Copyright © Curt Hill Generic Classes Template Classes or Container Classes.
Virtual Memory Virtual Memory is created to solve difficult memory management problems Data fragmentation in physical memory: Reuses blocks of memory.
Pointers: Basics. 2 What is a pointer? First of all, it is a variable, just like other variables you studied  So it has type, storage etc. Difference:
JAVA AND MATRIX COMPUTATION
We will talking about story of JAVA language. By Kristsada Songpartom.
CS536 Semantic Analysis Introduction with Emphasis on Name Analysis 1.
C/C++ Basics. Basic Concepts Basic functions of each language: Input, output, math, decision, repetition Types of errors: Syntax errors, logic errors,
Hashing Fundamental Data Structures and Algorithms Margaret Reid-Miller 18 January 2005.
Computer Organization and Design Pointers, Arrays and Strings in C Montek Singh Sep 18, 2015 Lab 5 supplement.
FORTRAN History. FORTRAN - Interesting Facts n FORTRAN is the oldest Language actively in use today. n FORTRAN is still used for new software development.
Lecture – Pointers1 C++ Pointers Joseph Spring/Bob Dickerson School of Computer Science Operating Systems and Computer Networks Based on notes by Bob Dickerson.
ITEC 352 Lecture 19 Functions in Assembly. Functions + Assembly Review Questions? Project due on Friday Stacks Function activation / deactivation.
Analysis of Programming Languages (2). 2 LANGUAGE DESIGN CONSTRAINTS  Computer architecture  Technical setting  Standards  Legacy systems.
Introduction to OOP CPS235: Introduction.
ICOM 4035 – Data Structures Dr. Manuel Rodríguez Martínez Electrical and Computer Engineering Department Lecture 2 – August 23, 2001.
Spring 2009 Programming Fundamentals I Java Programming XuanTung Hoang Lecture No. 8.
Learners Support Publications Constructors and Destructors.
Chapter 1: Preliminaries Lecture # 2. Chapter 1: Preliminaries Reasons for Studying Concepts of Programming Languages Programming Domains Language Evaluation.
Review A program is… a set of instructions that tell a computer what to do. Programs can also be called… software. Hardware refers to… the physical components.
Sections Basic Data Structures. 1.5 Data Structures The way you view and structure the data that your programs manipulate greatly influences your.
Chapter 4: Threads Modified by Dr. Neerja Mhaskar for CS 3SH3.
Constructors and Destructors
Advanced Computer Systems
Visit for more Learning Resources
Why to use the assembly and why we need this course at all?
Topic: Difference b/w JDK, JRE, JIT, JVM
Java Review: Reference Types
Optimizing Malloc and Free
Chapter 4: Threads.
Memory Management Tasks
Constructors and Destructors
Binding Times Binding is an association between two things Examples:
(Computer fundamental Lab)
Presentation transcript:

1 Java Grande Introduction  Grande Application: a GA is any application, scientific or industrial, that requires a large number of computing resources(CPUs, networks, I/O, memory)  Java Grande Forum:  Initiated by some people in academic  Supported by IBM, SUN, NIST …  Primary Goal: Making Java a better environment for Grande Application development

2 Advantages/ Disadvantages of Java  Supporters of Java Grande believe:  Java can be written once and run virtually everywhere: Ideal for heterogeneous computing  Better floating point computing predictability  …  However, Java is not perfect  Numeric computing performance is not very satisfying  The performance should be comparable to what is achieved in C/Fortran if it is a choice for high-performance computing  There are spaces for improvement on memory management and concurrency performance.

3 Improving Numeric Computation Performance  Java needs to be improved to be a suitable environment for high performance numeric computation  Constraints of the changes:  Relatively small change on JVM  Upward compatibility and a big amount of backward compatibility should be maintained  Good execution speed should be achieved on widely available microprocessors

4 Critical Issues  Lightweight classes  Implementation of alternative arithmetic such as complex, multiple precision and so on requires new objects with value semantics  Operator overloading  Alternative arithmetic operation should be as readable as those based only on float and double  Multidimensional Arrays  Operations on multidimensional arrays of elementary numerical types must be easily optimized and the lay out of arrays should be known to the developer

5 Complex Arithmetic  Straight forward complex class is far from efficient:  Object overhead  Semantics of complex objects are different from those of float/ double  Use method calls for arithmetic operations leads to very bad code  Add a new primitive type  A lot of changes have to be done on JVM or  Mapping the complex type into a pair of double  How to pass complex into a method  How to return a complex number  And what about other numeric types? The answer: using light weighted classes

6 Light weight classes  Allow runtime use of what appears to be a C struct  Having value semantics  Never be null  No dynamic dispatch overhead is needed since these classes are always final  Language modification  A new class modifier  JVM level  Add a new struct (big change to JVM), or  Translate lightweight classes in to normal classes by the compiler. The compiler should also be responsible for the optimization of space and speed ( good backward compatibility)

7 Operator Overloading  Without overloading, codes using complex arithmetic would look very different than code using real arithmetic  A minimum set of existing operators need be overloaded  Arithmetic, comparison, assignment  Problems:  How to name the methods corresponding to overloaded operators: + are not allowed in Java to form an identifier  How to resolve overloaded methods:  Double + Complex  Complex + Double

8 Multidimensional Array  Multidimensional arrays are very useful in scientific computation  Java’s array of array is not real multidimensional array  Double [][] A = new double[m][n];  A[i] = A[i] + 1;  Suggestion:  For each primitive type and some other types, and each rank (0 –7), build a standard java class and put it into the library  Allow the concept of regular section: subarray of another array  Expose the internal storage scheme to the developer

9  Java in scientific computation and enterprise computation  How to improve concurrency performance  How to manage memory more efficiently To be continued (if there is a chance)