Java Fast Sockets for HPC

Those of you familiar with writing scientific applications will probably agree that your first choice in languages for core algorithms will fall somewhere around Fortran, C or C++.  Notice that Java is not traditionally placed in this list.  I’ve had the professional pleasure of trying to explicitly mine performance from large Java-based applications.  Outside of the typical loop optimizations, I found that Java, by design, isn’t capable of getting terribly “close to the metal.”  That may be changing.

I stumbled upon an article at ZDNet that details a recent research paper on RDMA communications and the Java programming language.  Researchers at the University of A Coruña in Spain have developed a Java library called Java Fast Sockets [JFS] that dramatically increased the throughput and reduces the overall latency associated with normal Java socket and NIO APIs.

From the paper:

This paper presents Java Fast Sockets (JFS), an optimized Java socket implementation on clusters for high performance computing. Current socket libraries do not efficiently support high-speed cluster interconnects and impose substantial communication overhead. JFS overcomes these performance constraints by: (1) enabling high-speed communication on cluster networks such as Scalable Coherent Interface (SCI), Myrinet and Gigabit Ethernet; (2) avoiding the need of primitive data type array serialization; (3) reducing buffering and unnecessary copies; and (4) reimplementing the protocol for boosting shared memory (intra-node) communication. Its interoperability and user and application transparency allow for immediate applicability on a wide range of parallel and distributed target applications. A performance evaluation conducted on a dual-core cluster has shown experimental evidence of throughput increase on SCI, Myrinet, Gigabit Ethernet and shared memory communication. It has also been analyzed the impact of this improvement on the overall application performance of representative parallel codes.

A small, native library provides the necessary operating system hooks for Java apps to take advantage of any RDMA capabilities found in JFS.  This could prove very interesting for the acceptance of Java into more scientific realms.  Many universities have completely dropped Fortran and C from the coursework, in favor of C++, Java and other object oriented programming languages.

For more info, read the full article here.

Comments

  1. It might be useful to point out the the computer science departments are the ones whom have largely dropped anything but C++ Java and related languages. if you want to do work in some of the harder physical sciences and engineering, you’ll have to pick up C, Fortran, Python/Perl/Ruby on your own.

    I taught an HPC programming class at my alma mater a few years ago. I used C, as I thought there would be resistance to Fortran (there was). I had people tell me the only programming they had done was in Matlab. And one student was unhappy because he didn’t know C, but knew C++ …

    Low level interconnect access isn’t the only reason why Java isn’t in significant use in HPC. I don’t expect this development to change the situation much.