Qrack  9.0
General classical-emulating-quantum development framework
Public Member Functions | Public Attributes | Protected Attributes | Private Attributes | Friends | List of all members
Qrack::OCLDeviceContext Class Reference

#include <oclengine.hpp>

Public Member Functions

 OCLDeviceContext (cl::Platform &p, cl::Device &d, cl::Context &c, int64_t dev_id, int64_t cntxt_id, int64_t maxAlloc, bool isGpu, bool isCpu, bool useHostMem)
 
OCLDeviceCall Reserve (OCLAPI call)
 
EventVecPtr ResetWaitEvents ()
 
template<typename Fn >
void EmplaceEvent (Fn fn)
 
void WaitOnAllEvents ()
 
size_t GetPreferredSizeMultiple ()
 
size_t GetPreferredConcurrency ()
 
size_t GetProcElementCount ()
 
size_t GetMaxWorkItems ()
 
size_t GetMaxWorkGroupSize ()
 
size_t GetMaxAlloc ()
 
size_t GetGlobalSize ()
 
size_t GetLocalSize ()
 
size_t GetGlobalAllocLimit ()
 

Public Attributes

const cl::Platform platform
 
const cl::Device device
 
const cl::Context context
 
const int64_t context_id
 
const int64_t device_id
 
const bool is_gpu
 
const bool is_cpu
 
const bool use_host_mem
 
cl::CommandQueue queue
 
EventVecPtr wait_events
 

Protected Attributes

std::mutex waitEventsMutex
 
std::map< OCLAPI, cl::Kernel > calls
 
std::map< OCLAPI, std::unique_ptr< std::mutex > > mutexes
 

Private Attributes

const size_t procElemCount = device.getInfo<CL_DEVICE_MAX_COMPUTE_UNITS>()
 
const size_t maxWorkItems = device.getInfo<CL_DEVICE_MAX_WORK_ITEM_SIZES>()[0]
 
const size_t maxWorkGroupSize = device.getInfo<CL_DEVICE_MAX_WORK_GROUP_SIZE>()
 
const size_t maxAlloc = device.getInfo<CL_DEVICE_MAX_MEM_ALLOC_SIZE>()
 
const size_t globalSize = device.getInfo<CL_DEVICE_GLOBAL_MEM_SIZE>()
 
const size_t localSize = device.getInfo<CL_DEVICE_LOCAL_MEM_SIZE>()
 
size_t globalLimit
 
size_t preferredSizeMultiple
 
size_t preferredConcurrency
 

Friends

class OCLEngine
 

Constructor & Destructor Documentation

◆ OCLDeviceContext()

Qrack::OCLDeviceContext::OCLDeviceContext ( cl::Platform &  p,
cl::Device &  d,
cl::Context &  c,
int64_t  dev_id,
int64_t  cntxt_id,
int64_t  maxAlloc,
bool  isGpu,
bool  isCpu,
bool  useHostMem 
)
inline

Member Function Documentation

◆ EmplaceEvent()

template<typename Fn >
void Qrack::OCLDeviceContext::EmplaceEvent ( Fn  fn)
inline

◆ GetGlobalAllocLimit()

size_t Qrack::OCLDeviceContext::GetGlobalAllocLimit ( )
inline

◆ GetGlobalSize()

size_t Qrack::OCLDeviceContext::GetGlobalSize ( )
inline

◆ GetLocalSize()

size_t Qrack::OCLDeviceContext::GetLocalSize ( )
inline

◆ GetMaxAlloc()

size_t Qrack::OCLDeviceContext::GetMaxAlloc ( )
inline

◆ GetMaxWorkGroupSize()

size_t Qrack::OCLDeviceContext::GetMaxWorkGroupSize ( )
inline

◆ GetMaxWorkItems()

size_t Qrack::OCLDeviceContext::GetMaxWorkItems ( )
inline

◆ GetPreferredConcurrency()

size_t Qrack::OCLDeviceContext::GetPreferredConcurrency ( )
inline

◆ GetPreferredSizeMultiple()

size_t Qrack::OCLDeviceContext::GetPreferredSizeMultiple ( )
inline

◆ GetProcElementCount()

size_t Qrack::OCLDeviceContext::GetProcElementCount ( )
inline

◆ Reserve()

OCLDeviceCall Qrack::OCLDeviceContext::Reserve ( OCLAPI  call)
inline

◆ ResetWaitEvents()

EventVecPtr Qrack::OCLDeviceContext::ResetWaitEvents ( )
inline

◆ WaitOnAllEvents()

void Qrack::OCLDeviceContext::WaitOnAllEvents ( )
inline

Friends And Related Function Documentation

◆ OCLEngine

friend class OCLEngine
friend

Member Data Documentation

◆ calls

std::map<OCLAPI, cl::Kernel> Qrack::OCLDeviceContext::calls
protected

◆ context

const cl::Context Qrack::OCLDeviceContext::context

◆ context_id

const int64_t Qrack::OCLDeviceContext::context_id

◆ device

const cl::Device Qrack::OCLDeviceContext::device

◆ device_id

const int64_t Qrack::OCLDeviceContext::device_id

◆ globalLimit

size_t Qrack::OCLDeviceContext::globalLimit
private

◆ globalSize

const size_t Qrack::OCLDeviceContext::globalSize = device.getInfo<CL_DEVICE_GLOBAL_MEM_SIZE>()
private

◆ is_cpu

const bool Qrack::OCLDeviceContext::is_cpu

◆ is_gpu

const bool Qrack::OCLDeviceContext::is_gpu

◆ localSize

const size_t Qrack::OCLDeviceContext::localSize = device.getInfo<CL_DEVICE_LOCAL_MEM_SIZE>()
private

◆ maxAlloc

const size_t Qrack::OCLDeviceContext::maxAlloc = device.getInfo<CL_DEVICE_MAX_MEM_ALLOC_SIZE>()
private

◆ maxWorkGroupSize

const size_t Qrack::OCLDeviceContext::maxWorkGroupSize = device.getInfo<CL_DEVICE_MAX_WORK_GROUP_SIZE>()
private

◆ maxWorkItems

const size_t Qrack::OCLDeviceContext::maxWorkItems = device.getInfo<CL_DEVICE_MAX_WORK_ITEM_SIZES>()[0]
private

◆ mutexes

std::map<OCLAPI, std::unique_ptr<std::mutex> > Qrack::OCLDeviceContext::mutexes
protected

◆ platform

const cl::Platform Qrack::OCLDeviceContext::platform

◆ preferredConcurrency

size_t Qrack::OCLDeviceContext::preferredConcurrency
private

◆ preferredSizeMultiple

size_t Qrack::OCLDeviceContext::preferredSizeMultiple
private

◆ procElemCount

const size_t Qrack::OCLDeviceContext::procElemCount = device.getInfo<CL_DEVICE_MAX_COMPUTE_UNITS>()
private

◆ queue

cl::CommandQueue Qrack::OCLDeviceContext::queue

◆ use_host_mem

const bool Qrack::OCLDeviceContext::use_host_mem

◆ wait_events

EventVecPtr Qrack::OCLDeviceContext::wait_events

◆ waitEventsMutex

std::mutex Qrack::OCLDeviceContext::waitEventsMutex
protected

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