[go: up one dir, main page]

SYCL Hackfest @ IWOCL 2024

The 12th International Workshop on OpenCL and SYCL at the University of Illinois in Chicago was accompanied by a SYCL Hackfest, prior to the opening of the conference.

 

The basic idea of the SYCL Hackfest was to work in small groups on a previously proposed project (that should be completed in one day). Potential topics of interest included performance and optimizations, working with new SYCL 2020 features, porting CUDA code to SYCL, or, as a kind of default project, improving the occupancy and consistency of the HeCBench benchmark suite.

 
The projects ranged from beginner or intermediate projects like setting up a SYCL environment for the first time, to more advanced topics like interfacing SYCL with Python or looking at new SYCL compiler features like the newly introduced support for C++17 standard parallelism in AdaptiveCpp and Intel’s icpx compilers.

 

The Hackfest started with a short introduction of all the people organizing the hackathon, the program structure, and the hardware to be provided to us during the Hackfest. After that, we were completely free to work on our projects in small groups.

 

The nice thing about this Hackfest is, that it is for everyone:

There were groups rather new to SYCL using it the first time for their project, but also groups like mine that already had years of experience with SYCL. That’s especially nice for the newcomers that could and did ask other more experienced groups for help or suggestions. Besides that, maintainers of all major SYCL implementations were present during the Hackfest making it possible to ask very specific SYCL (compiler) related questions and get immediate answers.

 

During the coffee and lunch breaks it was also common to stand together, talking about your specific SYCL-related projects and get new ideas or feedback from other SYCL users. Also, during the lunch break, we were able to get a glimpse of the solar eclipse occurring at this time above Chicago.

 

I formed a small group with a colleague of mine. Together we were introducing a new backend to our Support Vector Machine library PLSSVM that uses C++17 standard library parallelism. This can now directly be done using SYCL, since AdaptiveCpp as well as Intel’s icpx support stdpar offloading to CPUs and GPUs from various vendors. 

 

During this Hackfest, we were able to get an initial prototype working and gathered our first results using AdaptiveCpp’s stdpar implementation. These results showed, that in our use case, for small problem sizes, the stdpar implementation beat our native CUDA backend. However, this changes with increasing problem size- the stdpar backend becomes slower than the native CUDA backend mainly due to the lag of some optimizations that can simply not be implemented in stdpar (e.g., using local memory). 


After the Hackfest ended, we polished our stdbar backend, adding support for many different stdpar implementations (nvc++, gcc, AdaptiveCpp, icpx, and roc-stdpar), and also submitted a short paper to a conference describing our results.

 

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

 

×


Watch the oneAPI DevSummit hosted by UXL:

Watch Now