The C++ Standard Template Library (STL) defines a set of basic algorithms such as sort().
Such functionality is, where reasonable, provided for NVIDIA GPUs with thrust, but there is no extensive and independent implementation available in OpenCL. Thus, the goal of this project is to implement some of the most popular algorithms from the C++ STL for GPUs in ViennaCL.
Benefit for the Student
Fame and glory! :-) Invaluable experience in programming a robust high-level interface for targeting CPUs and GPUs on the low level will be gained.
Benefit for the Project
Providing efficient STL-type functionality will enable a lot of additional algorithms with portable performance to be added to ViennaCL in the future. In addition, users can easily compose operations not natively provided by the library.
Advanced knowledge of C++ is essential, including familiarity with meta-programming techniques. Experience with GPU programming is a plus.