Common Runtime Support
for HPF and HPC++ compilation

  • PCRC Layout

    Purpose

    The parallel common runtime system support is aimed to create the concept of and write the software for a public domain system infrastructure that will provide unified runtime support for several different high performance languages and compilers. This will allow different programming languages to share data structures that are dis tributed across the memory hierarchy of a scalable parallel system and develop common code and data descrip tors, and routines that operate on them, for supporting data parallelism in high performance languages. The research will result in portable and scalable multi-platform runtime support, inter-operable compilers, integrated multi-language support, and improved software engineering tools for developing high performance computing software.

  • Demonstration of Common Runtime System Interface for HPL compiler

    The common runtime system designed was to create a public domain system infrastructure for mulit-high performance lanuages. We deifned a common code and data descriptors for supporting data parallelism in HPLs. Above this common runtime system, we should provide a specific language interface for each HPL to transform their own data descriptors and data structures into the common data descriptors, each HPL has specific data distribution models suitable for different kinds of applications.

    Here we have implemented a Fortran language interface for HPF compiler in NPAC at Northest Parallel Architecture Center (NPAC) at Syracuse University. Our HPF compiler will translate the HPF applications into F77 codes using this interface on top of the common runtime system support. Then the HPF applications can execute on distributed systems.

  • Demonstration of HPF applications

    • 2-D Potts Simulation

      This is a 2-D Q-State Potts mode using the classic Metropolis heatbath algorithm, which is first implemented in HPF codes. In this applications, in order to preserve detailed balance it is necessary to use at least a red-black chess board update scheme with nearest neighbour interactions. CYCLIC data distribution allows this to have a more efficient data mapping (and therefore caching).

      We translated this application into common runtime system codes directly calling the functions provided by the common runtime system. From this we can see that common runtime system not only provides the support for high performance languages compiler through specific language interface, but it can be used directly to implement the applications as well.

    • 2-D Fast Fourier Transform (FFT)

      The Fast Fourier Transform (FFT) is the most widely known example of the Spectral method for computational problems. In all such methods, one performs a linear transformation of the stated problem into another physical domain where it is hoped will be more tractable. In Fourier transformations, the mapping is from the time domain to the frequency-domain. The FFT is widely used in the field of image processing, where one commonly describe an image in terms of intensity values in a two-dimensional matrix. The codes contained here performs a two-dimensional FFT over an example matrix -in this case a unit constant across all the elements- in the following manner:

      1. Set up the input 2-D matrix.
      2. Perform FFT across the leading dimension of the matrix.
      3. Transform the matrix, using an F90/HPF intrinsic function.
      4. Perform FFT again, across the leading dimension.
      5. Compare the expected results with that obtained.

      We also translated this HPF application into common runtime system codes using the common data descriptor and functions. From that we can see, our common runtime system is sufficient for the support of parallel data distribution applications.


If you have any question or comment, please contact Yuhong Wen at: wen@npac.syr.edu