Parallel Programming Interfaces
2003: Different programming interfaces offer the programmer a different set of tools. Often certain interfaces are very well suited for certain applications but impose limitations in others applications. Often these can be very fundamental limitations that restrict the programmer s ability to express the true algorithm that he wants to implement. In other cases, the limitations are less fundamental but are nevertheless very relevant. The programming interface can often force the programmer to deal with problems that are not related to the true algorithm and thus make it more difficult to solve the problem at hand.In addition to programming ease issues, performance limitations can be imposed by the programming interface. Message passing interfaces require the software to explicitly send messages between the processors. Such software intervention can lead to very poor performance. For this reason, shared memory architectures generally have much lower processor-to-processor latencies than message passing architectures.
The goal of this project is to compare the different parallel programming interfaces available to the programmer. MPI and OpenMP are the two main programming interfaces being compared. OpenMP with transactional memory will be evaluated as well. Both programming ease as well as performance will be considered in the evaluation. The goal is to understand the effect that the different interfaces have on the programmer and their ability to solve problems in parallel.
IGW=Independent Graph Walk
SQO=Simultaneous Queue Operations
IAQ=Independent Active Queues
RAC=Random Arc Choice
Project proposal: pdf
Preliminary presentation: html
Progress report: pdf
Final presentation: html
Final project report: pdf
Serial code: txt/c++
Serial code using IGW: txt/c++
OpenMP code: txt/c++
OpenMP code using IGW: txt/c++
OpenMP code using IGW+SQO: txt/c++
OpenMP code using IGW+RAC: txt/c++
OpenMP code using IAQ+RAC: txt/c++
OpenMP code using IAQ+RAC with random level graph: txt/c++
OpenMP bandwidth test: txt/c++
OpenMP latency test: txt/c++
MPI code with random level graph: txt/c++
MPI bandwidth test: txt/c++
MPI latency test: txt/c++
Transactional memory (with OpenMP) code using IAQ+RAC with random level graph: txt/c++