Monday Nov 17, 2008

So, What About Java for HPC?

About ten years ago the HPC community attempted to embrace Java as a viable approach for high performance computing via a forum called Java Grande. That effort ultimately failed for various reasons, one of which was the difficulty of achieving acceptable performance for interesting HPC workloads. Today at the HPC Consortium Meeting here in Austin, Professor Denis Caromel from the University of Nice made the case that Java is ready now for serious HPC use. He described the primary features of ProActive Java, a joint project between INRIA and University of Nice CNRS, and provided some performance comparisons against Fortran/MPI benchmarks.

As background, Denis explained that the goal of ProActive is to enable parallel, distributed, and multi-core solutions with Java using one unified framework. Specifically, the approach should scale from a single, multi-core node to a large, enterprise-wide grid environment.

ProActive embraces three primary areas: Programming, Optimizing, and Scheduling. The programming approach is based on the use of active objects to create a dataflow-like asynchronous communication framework in which objects can be instantiated in either separate JVMs or within the same address space in the case of a multi-core node. Objects are instantiated asynchronously on the receiver side and then represented immediately on the sender side by "future objects" which will be populated asynchronously when the remote computation completes. Accessing future events whose contents have not yet arrived causes a "wait by necessity" which implements the dataflow synchronization mechanism.

ProActive also supports a SPMD programming style with many of the same primitives found in MPI -- e.g., barriers, broadcast, reductions, scatter-gather, etc.

Results for several NAS parallel benchmarks were presented, in particular CG, MG, and EP. On CG, the ProActive version performed at essentially the same speed as the Fortran/MPI version over a range of problem sizes from 1-32 processes. Fortran did better on MG and this seems to relate to issues around large memory footprints, which the ProActive team is looking at in more detail. With EP, Java was faster or significantly faster in virtually all cases.

Work continues to lower messaging latency, to optimize in-node data transfers by sending pointers rather than data, and to reduce message-size overhead.

When asked how ProActive compares to X10, Denis pointed out that while X10 does share some concepts with ProActive, X10 is a new language while ProActive is designed to run on standard Java JVMs and to enable to use of standard Java for HPC.

A full technical paper about ProActive in PDF format is available here.


Friday May 30, 2008

High Performance Java

I've been exchanging email about Java performance with Paul Hohensee, Sun's technical lead on the Java SE VM. He sent me several slide decks and additional information that will be useful to anyone interested in writing high performance Java code or in extracting high performance from existing Java code.

The first presentation [PDF] contains a list of pointers to whitepapers on Java performance, tuning, and garbage collection, as well as additional resources on monitoring and management, including information on using Dtrace with Java. It also includes a list of performance-oriented blogs, which I reproduce here for your convenience:

BloggerBlog
Steve BohneSteve Bohne's Weblog
Dave DagastineDavid Dagastine's Weblog
Dave DiceDave Dice's Weblog
David HolmesDavid Holmes' Weblog
Steve GoldmanTravels with FatCatAir
Jon MasamitsuJon Masamitsu's Weblog
Keith McGuiganKeith McGuigan's Weblog
Tony PrintezisTony's Blog
John RoseJohn Rose @ Sun

The second presentation, titled "High Performance Java Technology in a Multi-core World" [PDF] by Paul Hohensee and David Dagastine was presented at the 2007 JavaOne Conference. It gives an overview of Sun's multi-core architectures and then presents Java VM technologies and software optimization techniques to maximize application performance.

Paul also pointed me to this recent article on Java performance myths, which summarizes the conclusions of two Google engineers who took a close look at conventional wisdom versus reality.


About

Josh Simons

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today