Loading...
Searching...
No Matches
q3::execution::gpu::device::GPUDeviceBackend Class Referenceabstract

#include <init.hpp>

+ Inheritance diagram for q3::execution::gpu::device::GPUDeviceBackend:

Public Member Functions

virtual ~GPUDeviceBackend ()=default
 
virtual void * allocate_unified (size_t size_bytes)=0
 
virtual void deallocate (void *pointer)=0
 
virtual std::string device_name () const =0
 
virtual bool supports_double_precision () const =0
 
virtual void synchronize ()=0
 
virtual size_t total_memory_bytes () const =0
 

Detailed Description

Definition at line 22 of file init.hpp.

Constructor & Destructor Documentation

◆ ~GPUDeviceBackend()

virtual q3::execution::gpu::device::GPUDeviceBackend::~GPUDeviceBackend ( )
virtualdefault

Member Function Documentation

◆ allocate_unified()

virtual void * q3::execution::gpu::device::GPUDeviceBackend::allocate_unified ( size_t  size_bytes)
pure virtual

Allocate unified (managed) memory accessible from both host and device.

On CUDA, this maps to cudaMallocManaged(). On Metal, this maps to MTLDevice::newBuffer() with MTLResourceStorageModeShared.

The returned memory is NOT zero-initialized.

Parameters
size_bytesNumber of bytes to allocate.
Returns
Pointer to the allocated memory.
Exceptions
std::runtime_errorIf allocation fails.

Implemented in q3::execution::gpu::device::CudaGPUDeviceBackend, q3::execution::gpu::device::HIPGPUDeviceBackend, and q3::execution::gpu::device::SYCLGPUDeviceBackendImpl.

Referenced by q3::cli::validate_gpu_device_backend().

◆ deallocate()

virtual void q3::execution::gpu::device::GPUDeviceBackend::deallocate ( void *  pointer)
pure virtual

◆ device_name()

virtual std::string q3::execution::gpu::device::GPUDeviceBackend::device_name ( ) const
pure virtual

◆ supports_double_precision()

virtual bool q3::execution::gpu::device::GPUDeviceBackend::supports_double_precision ( ) const
pure virtual

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

Returns false for Apple Silicon (Metal has no FP64 compute shaders). Returns true for CUDA GPUs (all supported compute capabilities).

Implemented in q3::execution::gpu::device::CudaGPUDeviceBackend, q3::execution::gpu::device::HIPGPUDeviceBackend, and q3::execution::gpu::device::SYCLGPUDeviceBackendImpl.

Referenced by q3::cli::validate_gpu_device_backend().

◆ synchronize()

virtual void q3::execution::gpu::device::GPUDeviceBackend::synchronize ( )
pure virtual

Block until all pending GPU operations have completed.

Must be called before reading GPU-produced results on the host, and before precision casts or MPI collectives.

Implemented in q3::execution::gpu::device::CudaGPUDeviceBackend, q3::execution::gpu::device::HIPGPUDeviceBackend, and q3::execution::gpu::device::SYCLGPUDeviceBackendImpl.

◆ total_memory_bytes()

virtual size_t q3::execution::gpu::device::GPUDeviceBackend::total_memory_bytes ( ) const
pure virtual

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