Abstractions

Distributed systems such as clusters, clouds, and grids are very challenging programming environments. Although the expert programmers may be able to tune distributed and multicore computers to achieve high performance, the non-expert may struggle to achieve a program that even functions correctly.

We argue that abstractions are an effective way of enabling non-expert users to harness clusters, multicore computers, and clusters of multicore computers. An abstraction is a declarative structure that joins simple data structures and small sequential programs into parallel graphs that can be scaled to large sizes. Because an abstraction is specialized to a restricted class of workloads, it is possible to create an effective, robust, scalable, and fault tolerant implementation.

Please follow the links below for basic instructions on each abstraction. Please report bugs by posting to our mailing list.

The currently available abstractions are:

All-Pairs - The All-Pairs abstraction computes the Cartesian product of two sets, generating a matrix where each cell M[i, j] contains the output of the function F on objects A[i] and B[j]. (learn more)

Wavefront - The Wavefront abstraction computes a recurrence relationship in two dimensions. Each cell in the output matrix is generated by a function F where the arguments are the values in the cells immediately to the left, below, and diagonally left and below. (learn more)


Cooperative Computing Lab - CSE Department - Notre Dame