Despite its age, SPMD (Single Program Multiple Data) parallelism continues to be one of the most popular parallel execution models in use today, as exemplified by OpenMP for multicore systems and CUDA and OpenCL for accelerator systems. The basic idea behind the SPMD model, which makes it different from task-parallel models, is that all logical processors (worker threads) execute the same program with sequential code executed redundantly and parallel code executed cooperatively.
My thesis extends the polyhedral model to enable analysis and optimizations of SPMD-Style explicitly parallel programs. My thesis also demonstrates the value of this extended polyhedral representation by its use in two applications to help developers of SPMD programs — identification of data races, and removal of redun- dant barriers. My thesis also includes evaluation of the above two applications using 36 OpenMP programs from the OmpSCR and PolyBench/ACC OpenMP benchmark suites.