A Region-based Approach to Parallel Computing
CPSC 349 Report
Written by Patrice Belleville

Note: the basic contents of the talk was taken from a talk that was given recently. However I have felt free to modify details as I saw fit. In particular, the critique at the end is totally facetious, and does not in any way correspond to my opinion of the talk I attended. Finally, the real report should probably be a couple of paragraphs longer than this one.

The talk I attended was an interview talk by Dr. Somebody Something-Else, a faculty candidate who as applied for a position at the rank of assistant-professor. He talked about a parallel language he developed, called ZPL, and how ZPL uses an idea called regions to achieve performance comparable to that of other parallel programming languages, while at the same time being simple to program in.

When you run a program on a parallel computer, large arrays end up being split between different processors. The processors can do some computations locally (using only the part of the array that they have), but for others they must receive array elements from (or send array elements to) other processors. There are three criteria that parallel programming languages should aim to satisfy:

Most approaches fail with respect to one of three criteria. For instance, MPI (a popular library that uses message-passing) is not very readable, and is slower than other approaches. Other parallel languages rely on special features of given supercomputers (e.g. Co-array Fortran) and will therefore not run well on any other machine.

The ZPL languages uses regions: a region is a subset of a multi-dimensional array (for instance a rectangle in the two-dimensional case). In ZPL, you can assign regions to each operation. So, for instance, if you have a region R, then you can write

    [R] a = b + c;
    
to add all elements of b and c inside the region, and store each sum in the corresponding element of a You can also shift some of the regions on the fly (i.e. have the region inside b be one position to the right of R, while shifting the region inside c one position to the left).

This allows to write simple statements. The compiler then generates the appropriate code, including the instructions necessary to move elements between processors.

At that point, the speaker presented graphs to compare the performance of the various methods on a single hard problem. In all cases, ZPL performed roughly as well as the approaches. However, the ZPL code was much, much shorter then the code using the other languages.

Finally, he discussed possible extensions of ZPL to deal with more general types of regions, for instance nodes in a graph. At this point, his talk became so technical that I lost him

Critique I found the talk very interesting. The speaker had excellent command of the material he was presenting. His examples were good, and well motivated. He also answered all questions clearly and patiently, even though some of them were somewhat bizarre. However, I found his Swedish accent and his fake beard extremely distracting. It would have been much better if he had only had a fake mustache instead. It was overall an excellent talk, in my opinion.


Patrice Belleville
Last modified: Fri Mar 30 15:14:40 PST 2001