Tutorial 1

Note: This tutorial is a joint tutorial between the ACM JavaGrande/ISCOPE conference and the SUN JavaOne conference.

Joint JavaGrande and JavaOne tutorial on:
JavaTM for High Performance Computing
 
Instructors: 

Dr. José E. Moreira
Research Staff Member
IBM Thomas J. Watson Research Center

Dr. Roldan Pozo 
Leader, Mathematical Software Group 
National Institute of Standards and Technology 

Dr. Vladimir Getov 
School of Computer Science, Westminster, 
UK 

Dr. Gregor von Laszewski
Argonne National Laboratory, U.S.A.

others TBD

 

Who Should Attend: 
Skilled Java technology-based software developers, engineers, programmers, analysts, architects, and computational scientists

 

Prerequisites:
Hands-on Java programming language experience is required. Understanding of distributed computing and object-oriented programming is required.

 

Benefits:
  • Highlights current trends in the use of Java for high-performance computing
  • Introduces Java numeric issues, including
    • efficient multi-arrays and complex numbers
    • efficient numerical calculations in Java
    • Java numerical libraries
  • Compares the performance of Java with C/C++ and Fortran
  • Discusses how Java can be used for distributed computing, including
    • use of message-passing libraries
    • distributed computing with remote objects
    • efficient access to computational Grids

 

Outline:
full day
  • INTRODUCTION TO HIGH-PERFORMANCE COMPUTING
    • History
    • Parallel programming paradigms
    • High-performance and distributed computing challenges
    • Current trends in the high-performance computing community
  • JAVA NUMERIC ISSUES
    • Introduction to Java for numerical computing
    • Bit-wise reproducibility of floating-point results
    • Multi-arrays
    • Complex numbers
    • Transcendental functions
    • Numerical libraries
    • Performance analysis
      • Comparison with C/C++ and Fortran
      • Optimizing BLAS kernels
      • Java numeric benchmarks
      • General performance improvements
  • OPTIMIZING COMPILER TECHNOLOGY
    • Java vs. Fortran array data structures
    • Optimizing compilers
    • Arrays
    • Performance results
  • JAVA FOR DISTRIBUTED COMPUTING
    • a. Distributed programming with message based libraries
    • MPI, openMP, JMS
    • FAST RMI, CORBA, and Jini
    • Distributed programming in computational Grids
      • Introduction to computational Grids
      • Secure access to remote resources in Grids
      • Remote job submission and monitoring
      • Distributed Grid information management an remote data access
      • Designing graphical component to access Grids
Abstract:
This course will discuss in detail how to use Java for tasks requiring high-performance computing.  The course is intended for developers and computational scientists experienced in using Java technology. The course will cover three main areas:
  • How to use Java in applications that require enhanced numerics
  • How to optimize compilers to achieve high performance
  • How to design distributed high-performance applications that use well-established programming paradigms

Acknowledgments:

This course is developed with the input of the following researchers (in alphabetical order):

Boisvert, Ron, NIST
Fox, Geoffrey C., Florida State University
Getov, Vladimir, University of Westminster, UK
Gupta, Manish, IBM T.J. Watson Research Center
Laszewski, Gregor von, Argonne National Laboratory
Midkiff, Samuel, IBM T.J. Watson Research Center
Moreira, Jose, IBM T.J. Watson Research Center
Philippsen, Michael, University of Karlsruhe, Germany
Pozo, Roland, NIST
Thiruvathukal, George K., Layola University

This tutorial is also announced through the JavaOne conference.