Windows HPC Server 2008 is Microsoft’s solution for high-performance computing. Built on Windows Server 2008 R2 64-bit technology, Windows HPC Server provides scalable cluster resource management, Windows Azure integration, support for Service-Oriented Architecture (SOA) workload, a job scheduler and a Message Passing Interface (MPI) stack for parallel programming.

The product has been around for a couple of years now and Microsoft has consistently been adding new features to the product, improving its functional scope when compared to the existing vendor solutions on the market like Tibco GridServer and IBM/Platform Symphony.

The product has been natively supporting C# and the .Net stack, as well as offering an open-source Java client library (here). While working with our customers to adopt Microsoft’s HPC cluster, some of them expressed interest in using interoperability mechanisms to integrate their existing Unix and GNU Linux C++ based applications into a Windows HPC infrastructure. In order to allow workload submission to a HPC Server enabled grid or Windows Azure deployment from Unix-like operating systems we developed a C++ bridge which takes advantage of the Windows HPC SOA capabilities for interoperability purposes.

There are a number of potential applications for this library but one of the most promising is the integration with financial software platforms such as Murex.

The library Excelian has implemented makes use of the four services exposed by the SOA component in HPC:

  • Session Launcher
  • Broker Launcher
  • Data Service
  • Broker Controller
The Session Launcher service is used to allocate sessions, to retrieve configuration information from the server and to obtain the information for a given session. The Broker Launcher service is used to establish a session with a broker, to attach clients to existing sessions, to obtain the list of active brokers, to check the status of a broker and to close sessions. The Data Service is used to share common data among the clients of a session. Finally, the Broker Controller is used for asynchronous work submission and result retrieval.

The client library communicates with the SOA component in the Windows HPC cluster through SOAP (Simple Object Access Protocol) over the HTTP protocol. The SOA component is based on WCF and provides service on both the HTTP and the NET-TCP bindings, this second one not being available for the C++ bridge. Nevertheless, most of the .Net’s functionalities in HPC cluster are available through the C++ client library.

During the design phase of the library, several SOAP C ++ frameworks were evaluated considering not only their specifications but also licensing aspects. GSOAP was finally selected to generate the client-side SOAP stubs used by the client API. The figure below depicts the scenario described above.

The C++ Microsoft HPC Server Interoperability Bridge has been rigorously tested from the functional and performance perspectives, both in GNU Linux (Debian squeeze amd64) and Solaris (SunOS 5.10 Generic_147441-01 i86pc i386 i86pc). The evaluation was fully supervised by Microsoft and performance tests were carried out at Microsoft’s test bed grid in Redmond, using a 31-node Windows HPC Server 2008 R2 SP3 cluster composed by 1 head node, 3 broker nodes and 27 compute nodes, each one equipped with 24 cores.

Functional tests reproduced the scenarios considered in the Java client to HPC Server. As for the performance tests, the figures below show the results for the baseline tests using a multithreaded client (8 threads), where each thread submits a predefined number of requests. The comparison is based on the turnaround time and throughput (number of messages per second). The values in the tables correspond to average values. As part of the test, the client checks that the responses retrieved from the server match the expected output.

The library is available as an open-source library on GitHub (here) and Excelian offers support for the library to users interested in integrating it in their systems.