Professor Tobias Weinzierl from our Department of Computer Science talks about integrating SYCL training into the teaching curriculum to equip students with deep understanding of GPU technology.
As the Principal Investigator of Durham University's Intel Academic Centre of Excellence (CoE), I made pushing SYCL into our High-Performance Computing (HPC) curriculum a top priority. However, I had to decide: create new SYCL-based modules or incorporate SYCL across existing courses? I chose the latter.
New technologies such as GPU programming with SYCL come along with a plenitude of tutorials, self-paced courses and example codes. A single course in an MSc programme, for example, should not “compete” with such material, and would target only a small cohort.
With our reputation for research-led, skills-focused teaching, our University instead can reach out to many colleagues and future researchers, put new technologies into context with other approaches, and provide methodological underpinning, while making people aware of interested in new technologies, their potential, and how to acquire the relevant skills. We therefore spread out SYCL training glimpses over multiple formats.
Through my leadership of the interdisciplinary MSc in Scientific Computing and Data Analysis (MISCADA), I've championed programs where students devote equal time to a computational discipline and universal methodologies. This course, a success story for our young Computer Science department, includes a module on GPU programming where SYCL is now an integral part, along with alternatives like OpenMP. Students also learn MPI, shared memory parallelisation, vectorisation, GPU architecture - a robust methodological training.
Our latest MSc success story is a paper called "SYCL Compute Kernels for ExaHyPE." It began as a dissertation project by 2022/23 graduate Chung Ming Loi and will be published at SIAM PP 2024, one of the leading conferences in the field Like-wisely, we offer SYCL-based final year projects to our level 3 and 4 students every year.
Classroom teaching and projects might be a Computer Science department's most vital training role. But through Durham's Scientific Computing research group, I'm also contributing to Research Software Engineers' upskilling.
Teaming with computing colleagues, especially ARC’s Marion Weinzierl (now at Cambridge) and friends from ICC/DiRAC, we created C++, GPU programming, debugging and performance analysis workshops. Visiting experts from POP, VI-HPS and companies join our staff as instructors, exposing attendees to multifaceted tools for engineering computational solutions. Mastering SYCL has become integral to these professional trainings.
For four years in a row, we’ve sent student cluster competition teams to CIUK, the UK’s original annual HPC conference. Laura Morgenstern from Computer Science now organises coaching for these students: specialised lectures and mini-workshops, like SYCL training, aid our consistently top teams.
Grasping SYCL fully takes time despite its simplicity and there are alternatives how to program GPUs with all of their pros and cons. As an institution though, we don't preach SYCL. We empower students and colleagues to thoroughly understand it themselves, equipping them to critically evaluate solutions to their problems.
For this, we teach hardware design, debugging tools, performance models - context for informed choices between technologies. Once skilled navigating these spaces, motivation to deeply learn SYCL will follow. Our duty is ensuring SYCL is embedded across our multifaceted curriculum as a key Intel and GPU technology.