ViennaCLBench is a GUI-based benchmark on top of ViennaCL, which was a successful GSoC project in 2014. Important improvements we hope you to come up with are a tighter integration of the Matrix-Market browser into the GUI, additional test cases like iterative solvers, and an export of results to files.
Squeezing the last bit of performance out of recent hardware is a lot of fun. Also, the student will learn a lot about Qt and C++ as well as the pitfalls of massively parallel hardware.
A nice benchmarking GUI will help us with collecting performance data from new hardware quickly. Since it is impossible for us to buy each of the many models of the market, such a benchmarking application will help us in getting valuable data.
Experience in GUI programming with Qt is a plus. Moderate C++ skills are required.
Karl Rupp, Namik Karovic
During GSoC 2013 the Python-wrapper PyViennaCL for the linear algebra library ViennaCL was created, which was subsequently improved in 2014. Still, there is plenty room for further improvement as well as an integration of recently added functionality in ViennaCL. The aim of the project is to speed up the build process of PyViennaCL and to include the latest features offered by ViennaCL.
The student will work on the boundary between C++ and Python, thus learning a lot about the strengths and limits of both languages.
A Python wrapper will make the rich functionality in ViennaCL available to a wide range of scientists using Python for their everyday projects.
A solid understanding of both C++ and Python is required. Ideally, the student has some experience with working with shared libraries on multiple platforms, particularly Windows and Linux.
Karl Rupp, Andreas Morhammer
The linear algebra routines in ViennaCL are primarily optimized for discrete GPUs from AMD and NVIDIA. However, OpenCL has also made significant progress on mobile hardware recently. The aim of this project is to optimize our routines for mobile GPUs from Qualcomm, ARM, and NVIDIA (Tegra).
The student will learn the subtle differences between mobile hardware and desktop hardware. He or she will get precious hands-on experience with latest mobile hardware.
The performance in ViennaCL becomes more portable, so that the user can rely on high performance irrespective of the underlying hardware.
Solid Linux knowledge and basic knowledge of C and C++ is a must. Experience with single board computers such as the Rasperry Pi is a plus.
Karl Rupp, TBD
ViennaCL has three computing backends: One based on CUDA, one based on OpenCL, and one based on OpenMP. While the CUDA and OpenCL backends provide high performance, this is not yet the case with the OpenMP backend. Although the OpenMP-backend was initially introduced as a fall-back mechanism for CPU-only systems, it is now mature enough to be tuned for high performance. The student will tune the individual linear algebra kernels (vector operations, matrix-vector products, etc.) for best performance.
Squeezing the last bit of performance out of recent hardware is a lot of fun.
Also, the student will learn a lot about how multi-core CPUs really work and the many tricks needed to get good performance.
Certain algorithms cannot be implemented efficiently on CPUs with only OpenCL, so having an efficient OpenMP compute backend available will be an enabler for many high-performance implementations both within ViennaCL and derived by our users.
Moderate C or C++ skills are required. Experience in using OpenMP is a plus.
Karl Rupp, TBD
We have got an extensive nightly test suite for ViennaCL, which verifies correct execution. 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.
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.
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.
Karl Rupp, TBD