In an effort to provide a machine-independent programming interface, a working group of representatives from industry, academia and government laboratories has defined an informal standard called High Performance Fortran (HPF). HPF consists of language extensions to Fortran 90 that support data-parallel programming by permitting specification of the distribution of data structures across the processors of a scalable parallel computer system. The ideas behind HPF have been taken in large part from earlier research on a language called Fortran D. This work, which was conducted at the Center for Research on Parallel Computation at Rice University and at Syracuse University, was sponsored under the HPCC Program by NSF and ARPA. The Fortran D project designed a scalable language on the basis of analysis of existing parallel applications, prototype compiler implementations and an extensive benchmark suite that are all available to the HPCC community. The HPF draft standard, which was produced over a single year, promises to dramatically reduce the burden of specifying parallel scientific programs for the new generation of massively parallel computer systems. Four companies have already announced HPF compilers that will be available in 1993. HPF will accelerate the use of parallel machines, as now users can use a high level software with the assurance that their applications will be supported by future as well as current systems.
Since HPF hides many of the details of parallel programming for a specific target machine, the programmer will need assistance in preparing, debugging and tuning HPF programs. To this end, ARPA is sponsoring a research project at Rice University and the University of Illinois at Champaign-Urbana to design and build a collection of programming tools for HPF, including an intelligent editor to help construct efficient data distributions, a debugger to locate data races and other programmer errors and a performance analysis and visualization system. This project has a secondary goal of providing a platform for the development of other software tools for HPF. When complete, this software platform will be distributed throughout the computational science community in source form.
The current version of HPF supports data parallel programming for about 50-75 percent of applications but has limited support for "unstructured" or "irregular" problems. Since this class includes many important science and engineering problems, NASA, ARPA, ONR and NSF are jointly sponsoring a research project at Rice, Syracuse and the University of Maryland to design and implement extensions to HPF to support this important problem class. This work will affect the next round of HPF standardization, scheduled for calendar year 1994.
Jacobi iteration, using HPF:
REAL X(N,N), Y(N,N)
!HPF$ DISTRIBUTE (*,BLOCK)::X,Y
FORALL ( J = 2 : N-1 )
FORALL ( I = 2 : N-1 )
X(I,J) = 0.25 * (Y(I-1,J) + Y(I+1,J) + Y(I,J-1) + Y(I,J+1))
END FORALL
END FORALL
Jacobi Iteration, using message passing:
REAL X(N,N_OVER_P), Y(N,0:N_OVER_P+1)
IF (MY_ID .NE. 0) THEN
SEND( Y(1:N,1), MY_ID-1 )
END IF
IF (MY_ID .NE. P-1) THEN
SEND( Y(1:N,N_OVER_P), MY_ID+1 )
END IF
IF (MY_ID .NE. P-1) THEN
RECEIVE( Y(1:N,N_OVER_P+1), MY_ID+1 )
END IF
IF (MY_ID .NE. 0) THEN
RECEIVE( X(1:N,0), MY_ID-1 )
END IF
LOW = 1
IF (MY_ID .EQ. 0) LOW=2
HIGH = N_OVER_P
IF (MY_ID .EQ. P-1) HIGH=N_OVER_P-1
DO J = LOW,HIGH
DO I = 2, N-1
X(I,J) = 0.25 * (Y(I-1,J) + Y(I+1,J) + Y(I,J-1) + Y(I,J+1))
END DO
END DO
These code segments both perform square mesh Jacobi relaxation on a distributed memory parllel computing system.