next up previous contents
Next: Direct Matrix Multiplication Up: Benchmarking HPJava, Part I: Previous: Benchmarking HPJava, Part I:   Contents


Importance of Node Performance

Our HPJava language incorporates some ideas from High Performance Fortran (HPF) [22], and also from lower level library-based SPMD approaches, including MPI. All principles of HPF are not adopted wholesale in HPJava. Instead we import just a subset of basic HPF language primitives into HPJava: in particular distributed arrays. Library-based SPMD programming has been very successful in its domain of applicability, and is well-established. We can assume fairly confidently that the lessons and successes of SPMD programming will carry over HPJava. What it is less obvious is that HPJava can provide acceptable performance at each computing node. There are two reasons why HPJava node performance is uncertain. The first one is that the base language is Java. We believe that Java is a good choice for implementing our HPspmd model. But, due to finite development resources, we can only reasonably hope to use the available commercial Java Virtual Machines (JVMs) to run HPJava node code. HPJava is, for the moment, a source-to-source translator. Thus, HPJava node performance depends heavily upon the third party JVMs. Are they good enough? The second reason is related to nature of the HPspmd model itself. The data-distribution directives of HPF are most effective if the distribution format of arrays (``block'' distribution format, ``cyclic'' distribution and so on) is known at compile time. This extra static information contributes to the generation of efficient node code[*]. HPJava starts from a slightly different point of view. It is primarily intended as a framework for development of--and use of--libraries that operate on distributed data. Even though distributed arrays may be clearly distinguished from sequential arrays by type signatures, their distribution format is often not known in advance (at compile time). Can we still expect the kind of node performance possible when one does have detailed compile-time information about array distribution? We begin to address these questions in this chapter with benchmarks for some applications mentioned earlier. These applications will be benchmarked, comparing the output of current HPJava compiler. In this chapter these applications are executed on a single processor. But--because of the way the translation scheme works--we are reasonably confident that the similar results will carry over to node code on multiple processors. In fact this will be confirmed in the next chapter.
next up previous contents
Next: Direct Matrix Multiplication Up: Benchmarking HPJava, Part I: Previous: Benchmarking HPJava, Part I:   Contents
Bryan Carpenter 2004-06-09