The EPCC OpenMP microbenchmarks have become a de facto standard tool for measuring the performance of OpenMP runtime implementations. With the advent of higher level, portable APIs for GPU programming such as OpenMP 4.0 and later, OpenACC and SYCL, no such equivalent set of benchmarks has become widely accepted. It would also be of interest to produce microbenchmarks that permit sensible direct comparisons between different APIs as well as between implementations. The EPCC OpenMP microbenchmark methodology cannot be adopted directly due to the lack of timing routines on the accelerator devices, so a different methodology needs to be developed.
The statistical aspects of microbenchmarking are generally poorly handled and not well understood. A more robust statistical approach should be taken, for example so that reliable error estimates of the benchmark measurements can be reported.
Overview of research area:
Microbenchmarks are an important tool for understanding and characterising hardware and API implementation performance. They complement application-level benchmarks by isolating very specific aspects of system performance, and provide standardised metrics by which new developments (both academic and commercial) can be assessed.
Potential research question(s)
- How to design microbenchmarks for GPUs - what is the best methodology for separating the overheads of e.g. kernel launch from the actual computation performed when only the sum of both can be measured
- How to design benchmarks that make fair comparisons across different APIs
- What is the state of the art performance-wise in current implementations of these APIs
- How (and why) do multiple measurements of the same benchmark/overhead vary, and what are the best statistical practices to make accurate unbiased measurements and robust error estimates.
Note that these are the minimum requirements to be considered for admission.
A UK 2:1 honours degree, or its international equivalent, in a relevant subject such as computer science and informatics, physics, mathematics, engineering, biology, chemistry and geosciences.
You must be a competent programmer in at least one of C or C++.
English Language requirements as set by University of Edinburgh
Student Recommended/Desirable Skills and Experience
- Computer architecture
- GPU programming
- Statistical analysis and error estimation