next up previous contents
Next: Channels Up: Parallel arrays and data Previous: Starting an HPJ program   Contents

Outlook on data-parallel programming in Java

Although Java is quite a restrictive language, our experiments suggest that it should be possible develop a useful class library interface for data parallel programming, without necessarily extending the basic language.

Java's strict typing regime (the absence, for example, of castable pointers) makes it difficult to write interfaces to communication libraries that efficiently accept data of multiple types (polymorphism). The I/O and socket communication classes in the standard API resort to expensive format conversions whenever an object has to be transfered. Benchmarking the example presented earlier indicates that while parallelism gives genuine performance gains there is an obvious communication penalty even with large problem sizes. For example, the following timings were obtained on a grid size of 512 by 512

              number of          time per
              processors       iteration/ms

                   1               1502
                   2               1011
                   4                784
The volume of data that has to be communicated in an iteration is on the order of 1% of the total data set, but speedup is still a long way from ideal. Further benchmark results are available on the demo Web page.

We hope that the efficiency problems can be overcome by taking a different approach to implementing the interface. Instead of implementing the library within Java on top of the standard API we will call the existing PCRC run-time library through a native methods interface. In any case this approach will be easier than recoding collective communication operations, some much more complicated the shift, within Java.


next up previous contents
Next: Channels Up: Parallel arrays and data Previous: Starting an HPJ program   Contents
Bryan Carpenter 2002-07-12