Loading...
Searching...
No Matches
q3::execution::gpu::device::SYCLGPUDeviceBackendImpl Class Reference
+ Inheritance diagram for q3::execution::gpu::device::SYCLGPUDeviceBackendImpl:

Public Member Functions

 SYCLGPUDeviceBackendImpl ()
 
void * allocate_unified (size_t size_bytes) override
 
void deallocate (void *pointer) override
 
std::string device_name () const override
 
const sycl::queue & queue () const override
 
sycl::queue & queue () override
 
bool supports_double_precision () const override
 
void synchronize () override
 
size_t total_memory_bytes () const override
 
- Public Member Functions inherited from q3::execution::gpu::device::SYCLGPUDeviceBackend
virtual ~SYCLGPUDeviceBackend ()=default
 
- Public Member Functions inherited from q3::execution::gpu::device::GPUDeviceBackend
virtual ~GPUDeviceBackend ()=default
 

Detailed Description

Definition at line 23 of file sycl.cpp.

Constructor & Destructor Documentation

◆ SYCLGPUDeviceBackendImpl()

q3::execution::gpu::device::SYCLGPUDeviceBackendImpl::SYCLGPUDeviceBackendImpl ( )
inline

Construct and initialize the SYCL device backend.

Uses the default selector, which prefers GPU devices when available and falls back to CPU for development/testing on systems without a discrete GPU.

Definition at line 32 of file sycl.cpp.

Member Function Documentation

◆ allocate_unified()

void * q3::execution::gpu::device::SYCLGPUDeviceBackendImpl::allocate_unified ( size_t  size_bytes)
inlineoverridevirtual

Allocate unified shared memory via sycl::malloc_shared().

Shared memory is accessible from both host and device with automatic data migration managed by the SYCL runtime. This is the SYCL equivalent of CUDA's cudaMallocManaged().

Implements q3::execution::gpu::device::GPUDeviceBackend.

Definition at line 65 of file sycl.cpp.

◆ deallocate()

void q3::execution::gpu::device::SYCLGPUDeviceBackendImpl::deallocate ( void *  pointer)
inlineoverridevirtual

Deallocate memory previously allocated via allocate_unified().

Implements q3::execution::gpu::device::GPUDeviceBackend.

Definition at line 77 of file sycl.cpp.

◆ device_name()

std::string q3::execution::gpu::device::SYCLGPUDeviceBackendImpl::device_name ( ) const
inlineoverridevirtual

Human-readable name of the SYCL device (e.g., "Intel(R) Data Center GPU Max 1550").

Implements q3::execution::gpu::device::GPUDeviceBackend.

Definition at line 37 of file sycl.cpp.

◆ queue() [1/2]

const sycl::queue & q3::execution::gpu::device::SYCLGPUDeviceBackendImpl::queue ( ) const
inlineoverridevirtual

Access the underlying SYCL queue (const).

Implements q3::execution::gpu::device::SYCLGPUDeviceBackend.

Definition at line 101 of file sycl.cpp.

◆ queue() [2/2]

sycl::queue & q3::execution::gpu::device::SYCLGPUDeviceBackendImpl::queue ( )
inlineoverridevirtual

Access the underlying SYCL queue for vendor-specific operations.

Implements q3::execution::gpu::device::SYCLGPUDeviceBackend.

Definition at line 94 of file sycl.cpp.

◆ supports_double_precision()

bool q3::execution::gpu::device::SYCLGPUDeviceBackendImpl::supports_double_precision ( ) const
inlineoverridevirtual

Whether the device supports native double precision (FP64) computation.

Checks for the sycl::aspect::fp64 capability. Most Intel Data Center GPUs support FP64; some consumer GPUs may not.

Implements q3::execution::gpu::device::GPUDeviceBackend.

Definition at line 54 of file sycl.cpp.

◆ synchronize()

void q3::execution::gpu::device::SYCLGPUDeviceBackendImpl::synchronize ( )
inlineoverridevirtual

Block until all pending GPU operations on this queue have completed.

Uses wait_and_throw() to surface any asynchronous exceptions from previously submitted kernel or memory operations.

Implements q3::execution::gpu::device::GPUDeviceBackend.

Definition at line 87 of file sycl.cpp.

◆ total_memory_bytes()

size_t q3::execution::gpu::device::SYCLGPUDeviceBackendImpl::total_memory_bytes ( ) const
inlineoverridevirtual

Total device global memory in bytes.

Implements q3::execution::gpu::device::GPUDeviceBackend.

Definition at line 44 of file sycl.cpp.


The documentation for this class was generated from the following file: