De-Experimentalize SYCL Target
The SYCL codegen target is experimental and can - for the most part - not be tested within our CI yet, as we are lacking JIT compilation and a runtime environment for SYCL kernels. Also, discussions are ongoing on how exactly to map the IR to the SYCL target.
This issue is meant for tracking progress and perspectives for the SYCL target.
Accessors as a lowering target for buffer accesses
The current implementation of the SYCL platform primarily targets SYCL USM buffers, and does not integrate sycl::buffer
and sycl::accessor
. A highly experimental mapping to these was integrated to pystencils-sfg (pystencils-sfg!3 (merged)), but it relies on potentially unsafe assumptions about the memory layout of buffers.
Accessors offer themselves as a potential target for lowering PsBufferAcc
, though - instead of linearizing to a direct memory access, pystencils could emit code directly targetting the sycl::accessor
API. This would require some changes to the lowering pass as it would need to take the platform into account, but the same protocol could also be used to support Kokkos View
s.
SYCL Testing Environment
Setting up a Python runtime environment for SYCL seems impractical at the moment (in my experience, but I also don't have a broad overview over the SYCL software landscape). Instead, we can use pystencils-sfg to prepare a test suite running small C++ test applications.
Alternative: Extension Package
It might prove sensible to move the implementation of the SYCL target outside of the pystencils main repository, and into a kind of extension package for nonstandard targets (this might also accomodate Kokkos). This could have the potential to simplify maintenance and testing, as this extension package could also depend on pystencils-sfg.
Roadmap
Finalization of the SYCL target is not on the agenda for release 2.0, which will likely be released with an experimental version of the SYCL code generator.