SYCL Backend
This backend enables GPU-accelerated computation through SYCL. It is only tested with AdaptiveCpp but should work with other SYCL implementations as well
Warning
The SYCL backend is currently experimental and under active development.
API Reference
Like every backend, the SYCL backend implements classes representing block multivectors and block matrices and views of individual blocks for these types.
-
template<class T, unsigned int bs>
class BlockMultivector SYCL multivector backed by USM shared memory.
Backend specifics:
Allocates USM shared memory on construction.
Stores a ::sycl::queue by value for submissions.
Assumes an in-order queue for implicit dependency ordering.
Copy constructor allocates new storage and zero-initializes it; it does not copy the underlying data.
-
template<class T, std::size_t cols_>
class BlockView SYCL block view backed by USM shared memory.
Backend specifics:
Uses a ::sycl::queue for all operations; kernels are enqueued on that queue.
Assumes an in-order queue for correctness of dependent operations. If an out-of-order queue is used, explicit events are required.
Methods typically do not wait; synchronization is deferred to the caller.
-
template<class T, unsigned int bs>
class BlockMatrix SYCL block matrix backed by USM shared memory.
Backend specifics:
Allocates USM shared memory on construction.
Stores a ::sycl::queue by value and uses it for memcpy/memset.
Copy operations perform explicit device copies and wait for completion.
print() waits on the queue before reading data on the host.
-
template<class T, unsigned int bs>
class MatrixBlockView SYCL matrix block view backed by USM shared memory.
Backend specifics:
Holds a queue pointer used for memcpy/memset and synchronization.
Methods that read/write on the host call queue->wait().
Assumes an in-order queue for implicit dependency ordering.