We have got an extensive nightly test suite for ViennaCL, which verifies correct execution on a broad range of hardware. However, we do not have a way to quickly catch performance regressions. The aim of this project is to set up a system which automatically benchmarks the routines available in ViennaCL, visually prepares them through HTML pages, and archives them. An example of such a system is the Benchbot at the FEniCS project.
The student will get in touch with a lot of different hardware and gain a deep understanding of how much computational power modern hardware is able to deliver. At the same time, the student will gain valuable experiences in combining various tools efficiently to set up a powerful performance monitoring suite.
Time-consuming manual checks of the performance before each release gets replaced by automated checks, thus improving the overall development efficiency substantially.
Moderate C or C++ skills are required. Experience with Linux and a scripting language (e.g. Python) is a plus.
Download ViennaCL and write a C or C++ application that benchmarks the vector operation x = y + z for vectors x, y, z. Compare and comment on the obtained performance for vectors of sizes between 100 and 1000000. Start with comparing only a single-threaded execution, then add parallelism via OpenMP, and finally compare the performance using OpenCL. Plot the obtained results in a way that can be easily automized (e.g. by generating the plot directly from your application, or by using command line tools or script languages).
For OpenCL you may install the OpenCL SDK from AMD. ViennaCL will then pick up the best device available automatically. If you have an NVIDIA GPU in your system then OpenCL has most likely been installed with the driver already.
Contact rupp_AT_iue.tuwien.ac.at or stop by at the institute if you have questions. Submit the code, plots and a short discussion of the results with your application.