The linear algebra routines in ViennaCL are primarily optimized for discrete GPUs from AMD and NVIDIA. At the same time, the open standard OpenCL used by ViennaCL 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. Also, the limitations of modern computing hardware in terms of power consumptions will be experienced in a hands-on manner. 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. Also, some of our implementations will become the first available routines explicitly tuned for mobile hardware.
Solid Linux knowledge and basic knowledge of C and C++ is a must. Experience with OpenCL, CUDA, or single board computers such as the Rasperry Pi is a plus.
The task is to write one or more OpenCL kernels using the convenience wrappers provided by ViennaCL to find the character with highest ASCII code in a sequence ('vector<char>' in ViennaCL. UPDATE Apr 6, 2015: Unfortunately there is a bug in the current ViennaCL which prohibits the use of vector<char>. Please use vector<int> instead for a sequence of integers.) of characters. For example, the character with highest ASCII code in “ABRACADRABRA” is 'R'. Come up with a good, fast and correct algorithm by extending the Custom OpenCL kernels example provided with ViennaCL.
Contact rupp_AT_iue.tuwien.ac.at or stop by at the institute if you have questions. Submit the code and a performance plot for different sequence lenghts with your application.