Announcements:
Today, we continue our discussion on HPF and the data parallel programming paradigm. Note that the data parallel paradigm is higher level and more restrictive than the task-channel paradigm. A number of the communication and mapping issues that make things harder for the designer in the task-channel approach, are either specified by directives in the program, or are inferred automatically by the compiler. This makes it easier to write programs in the data-parallel paradigm-however, it is still important to carefully design your program to get the best performance out of it. Also, because we are working at a higher level, it is harder to convert all algorithms into this programming paradigm.
Fortran 90 is the basis for HPF, and is a data-parallel programming language in its own right. We will therefore start our discussion of HPF by looking at the extensions F90 makes to F77. F90 augments F77 by providing pointers, dynamic memory allocation, recursion, etc. In addition to this, it also provides array assignment statements and array intrinsic functions. We will look at examples of these two F90 features from Section 7.2 of the text.
Next, we will look at the how to distribute data elements onto (abstract) processors. These are extensions that HPF makes to F90. By specifying an appropriate distribution of data onto processors, one can significantly reduce the amount of resulting communication. We will look at the PROCESSORS, ALIGN, and DISTRIBUTE compiler directives to achieve an appropriate data distribution.
Lecture notes not yet complete.