SYCL Practitioners Hackathon
Published: 2023-06-27 07:51:40

The SYCL Practitioners Hackathon took place the day before the 11th IWOCL & SYCLcon at the Center for Mathematical Science in Cambridge.

We got started with a short introduction of the people organizing the Hackathon and what the Hackathon was about: improving a benchmark suite that helps to find places, where SYCL is still slower than native CUDA. The benchmark in question is [HeCBench](https://github.com/zjin-lcf/HeCBench), a benchmark suite implementing many different micro-benchmarks like the widely known bablestream benchmark in CUDA, HIP, OpenMP Target Offloading, and SYCL. Its main goal is to create the foundation for studying the performance, portability, and productivity of the different programming languages or frameworks.

During the Hackathon, our goal was to gradually improve this benchmark suite. To do so, three different working groups were proposed:

1. 
The performance and optimization group had the goal to look at benchmarks that have different performance characteristics using the different frameworks. The question was whether these performance differences are inherently caused by the individual frameworks, or have other reasons, like slightly different codes or other defaults.

2. 
The “fix compiler warnings and errors” group had the task to fix some benchmarks. A few benchmarks did not compile at all with SYCL and other benchmarks issued many compilation warnings, often warnings that SYCL functions that were deprecated in the new SYCL 2020 specification were used.

3. 
The third group should have a look at how to correctly run benchmarks since running benchmarks in a fair and consistent way is highly non-trivial. Unfortunately, no one wanted to work on this topic (which is understandable since it is an extremely difficult topic).
However, another third group formed spontaneously: a group of people rather new to SYCL that wanted to learn more about SYCL. Therefore, this group worked on the tutorials of the SYCL Academy with the help of SYCL veterans.

We also got an introduction to the HPC systems that we could use to improve the benchmark suite. One system was provided by the Cambridge Service for Data-Driven Discovery (CSD3) equipped with NVIDIA A100 GPUs. The other system was provided by Intel and equipped with Saphire Rapid CPUs and a brand new dedicated Intel Data Center GPU Max.

After everyone and everything was introduced, we started to work on our group tasks. I was part of the group trying to fix compiler errors and warnings. Fortunately, we were provided with a sheet containing the benchmarks that do not compile and/or through many compilation warnings. So it was fairly easy to process the benchmarks one after another according to this list. After a while, fixing the benchmarks got simpler and simpler because many issues appeared repeatedly.

During the day we had multiple breaks where we would stand together and talk about our SYCL projects, our experiences, and future plans regarding ideas when working with SYCL. It was a great opportunity to talk to other SYCL enthusiasts and ask and talk about SYCL questions in more detail. You will never stop learning new things!

During our lunch break, we also got a short guided tour through the Center of Mathematical Science. One stop was the old office of Stephan Hawking, in the Center for Theoretical Cosmology established by him in 2007 within the Department of Applied Mathematics and Theoretical Physics.

At the end of the Hackathon, we did small “presentations” on what we achieved during the day. The group responsible for the performance investigations fixed a problem in one of the benchmarks. While beforehand SYCL was an order of magnitude slower than CUDA, it is now just as fast as CUDA!

Our group that was responsible for fixing the compiler errors and warnings also submitted multiple pull requests to the HeCBench repository that are already merged into the main branch. Now many more benchmarks can be used to compare the CUDA/HIP/OpenMP performance to SYCL!

All in all, the Hackathon was a great way to learn more about SYCL regardless of whether you are an SYCL beginner or are already familiar with SYCL and discuss questions or opinions with other SYCL enthusiasts.