PTK: A Parallel Toolkit Library

Publication Date


Type of Culminating Activity


Degree Title

Master of Science in Computer Science


Computer Science

Major Advisor

Amit Jain


The High Performance Computing (HPC) market has made a significant shift from large, monolithic, specialized systems to networked clusters of workstations. This has been precipitated by the continuing upward movement of the price/performance ratio of commodity computing hardware. The fast growth of this market has presented a challenge to the open source community. Software has not necessarily kept up with the growth.

The Parallel Toolkit Library provides support for common design patterns used throughout parallel programs. It includes both PVM and MPI versions. The examples given help users understand how to use the library functions.

The data sharing patterns of gather, scatter, and all to all are fully supported. They allow users the flexibility of having odd amounts of data that are not evenly divisible by the number of processes. The two-dimensional versions allow the user to share "ragged" arrays of data. These elements are not provided by PVM or MPI. The file merging functionality automates a common cluster task.

The workpools remove a significant layer of detail from writing workpool code. The user of the workpool needs to provide the library with functions for processing tasks and results. The library takes care of sending and receiving tasks and results. Most importantly it handles termination detection, which can be quite cumbersome to design and write.

The testing and benchmarking results are consistent with expectations. The library does not add a significant amount of overhead. In some cases, it may be more efficient than code that users would write, because time may not be taken in non-library code to incorporate some efficiencies that are part of the toolkit library. The library and example code is available at http://cs.boisestate.edu/~amit/research/ptk.

Libraries such as the toolkit are critical to making clusters easier to write programs for. The toolkit removes a layer of detail for the programmer to need to understand. This will make writing parallel programs easier and faster. The toolkit also provides a tested set of features that will make users' programs more robust.

Files over 30MB may be slow to open. For best results, right-click and select "save as..."