Our Students’ Internships
Chris Cummins (joined the CDT in 2014)
Codeplay internship: Eigen Library Interface Extension to use SYCL
Chris says: “I will be developing a research prototype for compile time scheduling of expression trees on GPUs and FPGAs. This project gives me a fantastic opportunity to contribute to future standards for heterogeneous parallelism, and has far reaching applications from Google’s TensorFlow to vision processing.”
Eigen is an open-source C++ template library for linear algebra computation. It is a well known and widely used library in the HPC community, as one of its main advantages is that it is supplied completely as header files with a very generic C++ interface, allowing a lot of flexibility. Its adoption by the scientific community has led the Eigen developers to explore the potential of GPGPU programming and the performance that it can deliver to linear algebra computations in this library. This initiative has started in one of their unsupported features, an interface for performing tensor computations on GPGPU devices. There is already a tensor interface supporting CUDA under development.
The aim of this project is to work on the interface developed currently by the Eigen community, in order to modify and extend it to work with open standards like SYCL™ for OpenCL™, allowing a broad spectrum of compute-capable GPUs to be utilised. There is already a proof of concept implementation that adds SYCL support, using the existing Eigen interface for tensor evaluation. During this project, the student will have the opportunity to work on a newly developed and interesting feature of this open-source project, with the intention of proposing an interface that will enable SYCL (and/or any available high-level libraries supporting it) to support features that are needed for a variety of Eigen modules.
As a contributor to Eigen, the student will be working closely with the active developers in its community, as well as the contributors to the SYCL specification and the first announced implementation of it, Codeplay’s ComputeCpp system. Support and help from the ComputeCpp team will be available to the student, as well as from developers who have been working on research projects, demos and benchmarks for SYCL and OpenCL.
Adam Harries (joined the CDT in 2014)
Codeplay internship: Parallel STL Student Intern
There is growing interest in the C++ and Heterogeneous Programming communities in providing natural ways of exposing parallel programming in C++. Various libraries exist in an attempt to cover this functionality, such as TBB, Bolt or Thrust, and a proposal to standardise those libraries via an extension to the current Standard Template Library (STL) has been submitted to the C++17 standard (N4505). Various implementations of this working draft have been proposed, like the ParallelSTL from Microsoft.
The aim of this project is to provide an implementation of this working draft using SYCL™, the Khronos™ C++ abstraction layer built on top of OpenCL™. A partial implementation is already open-sourced and maintained by Codeplay, with feedback from a growing community of users.
The intern will continue the current work on the public Khronos SYCL ParallelSTL implementation, to complete the list of algorithms proposed by the Parallelism TS proposal for C++17.
Stan Manilov (joined the CDT in 2015)
Google internship: Software Engineering Intern
3rd August 2015 – 6th November 2015
The internship involved developing a compiler for an IDL (interface definition language) from scratch. The language is used to describe the interaction between Dart and native mobile languages like Java (Android) and Objective-C (iOS). The main goal for the compiler is to produce informative error messages, should compilation go wrong, and to be fast enough so that it can be embedded in a “Live Programming” environment. It was finished within the time scope of the internship and is now distributed as part of the Fletch VM.