Please note: This master’s thesis presentation will take place online.
Raymond Chang, Master’s candidate
David R. Cheriton School of Computer Science
Supervisor: Professor Chengnian Sun
OpenMP is a widely used API for parallel programming in C/C++ and Fortran. Its flexibility and simplicity have made its usage popular in many numerical or scientific applications. The prevalence of OpenMP programs in such important areas makes its respective compiler’s correctness significant. Unfortunately, OpenMP compilers are not tested as thoroughly as regular C/C++ compilers. More importantly, it is difficult to apply previous mutation-based testing techniques like EMI because of the parallelism in seed programs.
This thesis introduces new fuzz testing approaches specifically for OpenMP compilers. For existing OpenMP programs, we de-parallelize and mutate them with dead code injection and false parallelization. We also transform existing regular C programs into OpenMP programs with template-based mutations. Two test suites were used for the evaluation, the OpenMP Offloading Validation & Verification Suite (SOLLVE VV) and programs generated from Csmith. For SOLLVE VV and with GCC and LLVM, the proposed techniques have been shown to increase coverage by at least 4.4% and 1.81% respectively. Compared to Csmith programs, coverage is improved by at least 3.9% for GCC and 1.85% for LLVM.