GGEMS  1.1
GPU GEant4-based Monte Carlo Simulations
GGEMSOpenCLManager Class Reference

Singleton class storing all informations about OpenCL and managing GPU/CPU devices, contexts, kernels, command queues and events. In GGEMS the strategy is 1 context = 1 device. More...

#include "GGEMSOpenCLManager.hh"

Collaboration diagram for GGEMSOpenCLManager:
Collaboration graph

Public Member Functions

 GGEMSOpenCLManager (GGEMSOpenCLManager const &opencl_manager)=delete
 Avoid copy of the singleton by reference. More...
 
GGEMSOpenCLManageroperator= (GGEMSOpenCLManager const &opencl_manager)=delete
 Avoid assignement of the singleton by reference. More...
 
 GGEMSOpenCLManager (GGEMSOpenCLManager const &&opencl_manager)=delete
 Avoid copy of the singleton by rvalue reference. More...
 
GGEMSOpenCLManageroperator= (GGEMSOpenCLManager const &&opencl_manager)=delete
 Avoid copy of the singleton by rvalue reference. More...
 
void CheckOpenCLError (GGint const &error, std::string const &class_name, std::string const &method_name) const
 check the OpenCL error More...
 
void PrintPlatformInfos (void) const
 print all the informations about the platform More...
 
void PrintDeviceInfos (void) const
 print all informations about devices More...
 
void PrintBuildOptions (void) const
 print global build options used during kernel compilation More...
 
void PrintActivatedDevices (void) const
 print infos about activated devices More...
 
std::string GetDeviceName (GGsize const &device_index) const
 Get the name of the activated device. More...
 
cl_device_type GetDeviceType (GGsize const &device_index) const
 Get the type of the activated device. More...
 
GGsize GetNumberOfDetectedDevice (void) const
 get the number of detected devices More...
 
GGsize GetNumberOfActivatedDevice (void) const
 get the number of activated devices More...
 
GGsize GetIndexOfActivatedDevice (GGsize const &thread_index) const
 get the index of activated device More...
 
GGsize GetMaxBufferAllocationSize (GGsize const &device_index) const
 Get the max buffer size in bytes on activated OpenCL device. More...
 
GGsize GetRAMMemory (GGsize const &device_index) const
 Get the RAM in bytes on OpenCL device. More...
 
GGsize GetWorkGroupSize (void) const
 Get the work group size defined in GGEMS on activated OpenCL context. More...
 
GGsize GetBestWorkItem (GGsize const &number_of_elements) const
 get the best number of work item More...
 
cl::Context * GetContext (GGsize const &thread_index) const
 return the activated context More...
 
cl::CommandQueue * GetCommandQueue (GGsize const &thread_index) const
 Return the command queue to activated context. More...
 
cl::Event * GetEvent (GGsize const &thread_index) const
 return an event to activated context More...
 
void DeviceToActivate (GGsize const &device_id)
 set the index of the device to activate More...
 
void DeviceToActivate (std::string const &device_type, std::string const &device_vendor="")
 activate specific device More...
 
void DeviceBalancing (std::string const &device_balancing)
 change the device balancing, by default device balancing is the same for each device More...
 
GGfloat GetDeviceBalancing (GGsize const &thread_index) const
 return the device load for a device More...
 
GGsize GetNumberDeviceLoads (void) const
 return the size of device load vector More...
 
bool IsReady (void) const
 check if an OpenCL device is activated More...
 
void Clean (void)
 clean OpenCL data More...
 
void CompileKernel (std::string const &kernel_filename, std::string const &kernel_name, cl::Kernel **kernel_list, char *const custom_options=nullptr, char *const additional_options=nullptr)
 Compile the OpenCL kernel on the activated device. More...
 
template<typename T >
TGetDeviceBuffer (cl::Buffer *device_ptr, GGsize const &size, GGsize const &thread_index)
 Get the device pointer on host to write on it. ReleaseDeviceBuffer must be used after this method!!! More...
 
template<typename T >
void ReleaseDeviceBuffer (cl::Buffer *const device_ptr, T *host_ptr, GGsize const &thread_index)
 Get the device pointer on host to write on it. Mandatory after a GetDeviceBufferWrite ou GetDeviceBufferRead!!! More...
 
cl::Buffer * Allocate (void *host_ptr, GGsize const &size, GGsize const &thread_index, cl_mem_flags flags, std::string const &class_name="Undefined")
 Allocation of OpenCL memory. More...
 
void Deallocate (cl::Buffer *buffer, GGsize size, GGsize const &thread_index, std::string const &class_name="Undefined")
 Deallocation of OpenCL memory. More...
 
void CleanBuffer (cl::Buffer *buffer, GGsize const &size, GGsize const &thread_index)
 Cleaning buffer on OpenCL device. More...
 
bool IsDoublePrecisionAtomicAddition (GGsize const &device_index) const
 checking double precision atomic addition on OpenCL device More...
 

Static Public Member Functions

static GGEMSOpenCLManagerGetInstance (void)
 Create at first time the Singleton. More...
 

Private Member Functions

 GGEMSOpenCLManager (void)
 Unable the constructor for the user. More...
 
 ~GGEMSOpenCLManager (void)
 Unable the destructor for the user. More...
 
std::string ErrorType (GGint const &error) const
 get the error description More...
 
GGsize CheckKernel (std::string const &kernel_name, std::string const &compilation_options) const
 check if a kernel has been already compiled More...
 
bool IsDoublePrecision (GGsize const &device_index) const
 checking double precision on OpenCL device More...
 

Private Attributes

std::vector< cl::Platform > platforms_
 
std::vector< std::string > platform_profile_
 
std::vector< std::string > platform_version_
 
std::vector< std::string > platform_name_
 
std::vector< std::string > platform_vendor_
 
std::vector< std::string > platform_extensions_
 
std::vector< cl::Device * > devices_
 
std::vector< GGsizedevice_indices_
 
GGsize work_group_size_
 
VendorUMap vendors_
 
std::vector< cl_device_type > device_type_
 
std::vector< std::string > device_name_
 
std::vector< std::string > device_vendor_
 
std::vector< GGuintdevice_vendor_id_
 
std::vector< std::string > device_profile_
 
std::vector< std::string > device_version_
 
std::vector< std::string > device_driver_version_
 
std::vector< std::string > device_opencl_c_version_
 
std::vector< GGuintdevice_native_vector_width_char_
 
std::vector< GGuintdevice_native_vector_width_short_
 
std::vector< GGuintdevice_native_vector_width_int_
 
std::vector< GGuintdevice_native_vector_width_long_
 
std::vector< GGuintdevice_native_vector_width_half_
 
std::vector< GGuintdevice_native_vector_width_float_
 
std::vector< GGuintdevice_native_vector_width_double_
 
std::vector< GGuintdevice_preferred_vector_width_char_
 
std::vector< GGuintdevice_preferred_vector_width_short_
 
std::vector< GGuintdevice_preferred_vector_width_int_
 
std::vector< GGuintdevice_preferred_vector_width_long_
 
std::vector< GGuintdevice_preferred_vector_width_half_
 
std::vector< GGuintdevice_preferred_vector_width_float_
 
std::vector< GGuintdevice_preferred_vector_width_double_
 
std::vector< GGuintdevice_address_bits_
 
std::vector< GGbooldevice_available_
 
std::vector< GGbooldevice_compiler_available_
 
std::vector< cl_device_fp_config > device_half_fp_config_
 
std::vector< cl_device_fp_config > device_single_fp_config_
 
std::vector< cl_device_fp_config > device_double_fp_config_
 
std::vector< GGbooldevice_endian_little_
 
std::vector< std::string > device_extensions_
 
std::vector< GGbooldevice_error_correction_support_
 
std::vector< cl_device_exec_capabilities > device_execution_capabilities_
 
std::vector< GGulongdevice_global_mem_cache_size_
 
std::vector< cl_device_mem_cache_type > device_global_mem_cache_type_
 
std::vector< GGuintdevice_global_mem_cacheline_size_
 
std::vector< GGulongdevice_global_mem_size_
 
std::vector< GGulongdevice_local_mem_size_
 
std::vector< cl_device_local_mem_type > device_local_mem_type_
 
std::vector< GGbooldevice_host_unified_memory_
 
std::vector< GGsizedevice_image_max_array_size_
 
std::vector< GGsizedevice_image_max_buffer_size_
 
std::vector< GGbooldevice_image_support_
 
std::vector< GGsizedevice_image2D_max_width_
 
std::vector< GGsizedevice_image2D_max_height_
 
std::vector< GGsizedevice_image3D_max_width_
 
std::vector< GGsizedevice_image3D_max_height_
 
std::vector< GGsizedevice_image3D_max_depth_
 
std::vector< GGuintdevice_max_read_image_args_
 
std::vector< GGuintdevice_max_write_image_args_
 
std::vector< GGuintdevice_max_clock_frequency_
 
std::vector< GGuintdevice_max_compute_units_
 
std::vector< GGuintdevice_max_constant_args_
 
std::vector< GGulongdevice_max_constant_buffer_size_
 
std::vector< GGulongdevice_max_mem_alloc_size_
 
std::vector< GGsizedevice_max_parameter_size_
 
std::vector< GGuintdevice_max_samplers_
 
std::vector< GGsizedevice_max_work_group_size_
 
std::vector< GGuintdevice_max_work_item_dimensions_
 
std::vector< GGsizedevice_max_work_item_sizes_
 
std::vector< GGuintdevice_mem_base_addr_align_
 
std::vector< GGsizedevice_printf_buffer_size_
 
std::vector< cl_device_affinity_domain > device_partition_affinity_domain_
 
std::vector< GGuintdevice_partition_max_sub_devices_
 
std::vector< GGsizedevice_profiling_timer_resolution_
 
std::vector< GGfloatdevice_balancing_
 
std::string build_options_
 
std::vector< cl::Context * > contexts_
 
std::vector< cl::CommandQueue * > queues_
 
std::vector< cl::Event * > events_
 
std::vector< cl::Kernel * > kernels_
 
std::vector< std::string > kernel_compilation_options_
 

Detailed Description

Singleton class storing all informations about OpenCL and managing GPU/CPU devices, contexts, kernels, command queues and events. In GGEMS the strategy is 1 context = 1 device.

Definition at line 53 of file GGEMSOpenCLManager.hh.

Constructor & Destructor Documentation

◆ GGEMSOpenCLManager() [1/3]

GGEMSOpenCLManager::GGEMSOpenCLManager ( void  )
private

Unable the constructor for the user.

Definition at line 44 of file GGEMSOpenCLManager.cc.

◆ ~GGEMSOpenCLManager()

GGEMSOpenCLManager::~GGEMSOpenCLManager ( void  )
private

Unable the destructor for the user.

Definition at line 340 of file GGEMSOpenCLManager.cc.

◆ GGEMSOpenCLManager() [2/3]

GGEMSOpenCLManager::GGEMSOpenCLManager ( GGEMSOpenCLManager const &  opencl_manager)
delete

Avoid copy of the singleton by reference.

Parameters
opencl_manager- reference on the singleton

◆ GGEMSOpenCLManager() [3/3]

GGEMSOpenCLManager::GGEMSOpenCLManager ( GGEMSOpenCLManager const &&  opencl_manager)
delete

Avoid copy of the singleton by rvalue reference.

Parameters
opencl_manager- rvalue reference on the singleton

Member Function Documentation

◆ Allocate()

cl::Buffer * GGEMSOpenCLManager::Allocate ( void *  host_ptr,
GGsize const &  size,
GGsize const &  thread_index,
cl_mem_flags  flags,
std::string const &  class_name = "Undefined" 
)

Allocation of OpenCL memory.

Parameters
host_ptr- pointer to buffer in host memory
size- size of the buffer in bytes
thread_index- index of the thread (= activated device index)
flags- mode to open the buffer
class_name- name of class allocating memory
Returns
an pointer to an OpenCL buffer

Definition at line 945 of file GGEMSOpenCLManager.cc.

◆ CheckKernel()

GGsize GGEMSOpenCLManager::CheckKernel ( std::string const &  kernel_name,
std::string const &  compilation_options 
) const
private

check if a kernel has been already compiled

Parameters
kernel_name- name of the kernel
compilation_options- arguments of compilation
Returns
index of kernel if already compiled

Definition at line 828 of file GGEMSOpenCLManager.cc.

◆ CheckOpenCLError()

void GGEMSOpenCLManager::CheckOpenCLError ( GGint const &  error,
std::string const &  class_name,
std::string const &  method_name 
) const

check the OpenCL error

Parameters
error- error index
class_name- name of the class
method_name- name of the method

Definition at line 1048 of file GGEMSOpenCLManager.cc.

◆ Clean()

void GGEMSOpenCLManager::Clean ( void  )

clean OpenCL data

Definition at line 351 of file GGEMSOpenCLManager.cc.

◆ CleanBuffer()

void GGEMSOpenCLManager::CleanBuffer ( cl::Buffer *  buffer,
GGsize const &  size,
GGsize const &  thread_index 
)

Cleaning buffer on OpenCL device.

Parameters
buffer- pointer to buffer in host memory
size- size of the buffer in bytes
thread_index- index of the thread (= activated device index)

Definition at line 998 of file GGEMSOpenCLManager.cc.

◆ CompileKernel()

void GGEMSOpenCLManager::CompileKernel ( std::string const &  kernel_filename,
std::string const &  kernel_name,
cl::Kernel **  kernel_list,
char *const  custom_options = nullptr,
char *const  additional_options = nullptr 
)

Compile the OpenCL kernel on the activated device.

Parameters
kernel_filename- filename where is declared the kernel
kernel_name- name of the kernel
kernel_list- list of kernel by device
custom_options- new compilation option for the kernel
additional_options- additionnal compilation option

Definition at line 849 of file GGEMSOpenCLManager.cc.

◆ Deallocate()

void GGEMSOpenCLManager::Deallocate ( cl::Buffer *  buffer,
GGsize  size,
GGsize const &  thread_index,
std::string const &  class_name = "Undefined" 
)

Deallocation of OpenCL memory.

Parameters
buffer- pointer to buffer in host memory
size- size of the buffer in bytes
thread_index- index of the thread (= activated device index)
class_name- name of class deallocating memory

Definition at line 981 of file GGEMSOpenCLManager.cc.

◆ DeviceBalancing()

void GGEMSOpenCLManager::DeviceBalancing ( std::string const &  device_balancing)

change the device balancing, by default device balancing is the same for each device

Parameters
device_balancing- device balancing

Definition at line 785 of file GGEMSOpenCLManager.cc.

◆ DeviceToActivate() [1/2]

void GGEMSOpenCLManager::DeviceToActivate ( GGsize const &  device_id)

set the index of the device to activate

Parameters
device_id- device index

Definition at line 739 of file GGEMSOpenCLManager.cc.

◆ DeviceToActivate() [2/2]

void GGEMSOpenCLManager::DeviceToActivate ( std::string const &  device_type,
std::string const &  device_vendor = "" 
)

activate specific device

Parameters
device_type- type of device : all, gpu or cpu
device_vendor- vendor : nvidia, intel, or amd

Definition at line 682 of file GGEMSOpenCLManager.cc.

◆ ErrorType()

std::string GGEMSOpenCLManager::ErrorType ( GGint const &  error) const
private

get the error description

Parameters
error- error index from OpenCL library
Returns
the message error

Definition at line 1059 of file GGEMSOpenCLManager.cc.

◆ GetBestWorkItem()

GGsize GGEMSOpenCLManager::GetBestWorkItem ( GGsize const &  number_of_elements) const

get the best number of work item

Parameters
number_of_elements- number of elements for the kernel computation
Returns
best number of work item

Definition at line 1030 of file GGEMSOpenCLManager.cc.

◆ GetCommandQueue()

cl::CommandQueue * GGEMSOpenCLManager::GetCommandQueue ( GGsize const &  thread_index) const
inline

Return the command queue to activated context.

Parameters
thread_index- index of the thread (= activated device index)
Returns
the pointer on activated command queue

Definition at line 222 of file GGEMSOpenCLManager.hh.

◆ GetContext()

cl::Context * GGEMSOpenCLManager::GetContext ( GGsize const &  thread_index) const
inline

return the activated context

Parameters
thread_index- index of the thread (= activated device index)
Returns
the pointer on activated context

Definition at line 214 of file GGEMSOpenCLManager.hh.

◆ GetDeviceBalancing()

GGfloat GGEMSOpenCLManager::GetDeviceBalancing ( GGsize const &  thread_index) const
inline

return the device load for a device

Parameters
thread_index- index of the thread (= activated device index)
Returns
device balancing

Definition at line 261 of file GGEMSOpenCLManager.hh.

◆ GetDeviceBuffer()

template<typename T >
T * GGEMSOpenCLManager::GetDeviceBuffer ( cl::Buffer *  device_ptr,
GGsize const &  size,
GGsize const &  thread_index 
)

Get the device pointer on host to write on it. ReleaseDeviceBuffer must be used after this method!!!

Returns
the pointer on host memory on write/read mode
Parameters
device_ptr- pointer on device memory
size- size of region to map
thread_index- index of the thread (= activated device index)
Template Parameters
T- type of the returned pointer on host memory

Definition at line 480 of file GGEMSOpenCLManager.hh.

◆ GetDeviceName()

std::string GGEMSOpenCLManager::GetDeviceName ( GGsize const &  device_index) const
inline

Get the name of the activated device.

Parameters
device_index- index of device
Returns
name of activated device

Definition at line 145 of file GGEMSOpenCLManager.hh.

◆ GetDeviceType()

cl_device_type GGEMSOpenCLManager::GetDeviceType ( GGsize const &  device_index) const
inline

Get the type of the activated device.

Parameters
device_index- index of device
Returns
name of activated device

Definition at line 153 of file GGEMSOpenCLManager.hh.

◆ GetEvent()

cl::Event * GGEMSOpenCLManager::GetEvent ( GGsize const &  thread_index) const
inline

return an event to activated context

Parameters
thread_index- index of the thread (= activated device index)
Returns
the pointer on activated event

Definition at line 230 of file GGEMSOpenCLManager.hh.

◆ GetIndexOfActivatedDevice()

GGsize GGEMSOpenCLManager::GetIndexOfActivatedDevice ( GGsize const &  thread_index) const
inline

get the index of activated device

Parameters
thread_index- index of the thread (= activated device index)
Returns
index of activated device

Definition at line 175 of file GGEMSOpenCLManager.hh.

◆ GetInstance()

static GGEMSOpenCLManager & GGEMSOpenCLManager::GetInstance ( void  )
inlinestatic

Create at first time the Singleton.

Returns
Object of type GGEMSOpenCLManager

Definition at line 72 of file GGEMSOpenCLManager.hh.

◆ GetMaxBufferAllocationSize()

GGsize GGEMSOpenCLManager::GetMaxBufferAllocationSize ( GGsize const &  device_index) const
inline

Get the max buffer size in bytes on activated OpenCL device.

Parameters
device_index- index of activated devices
Returns
Max buffer allocation size

Definition at line 183 of file GGEMSOpenCLManager.hh.

◆ GetNumberDeviceLoads()

GGsize GGEMSOpenCLManager::GetNumberDeviceLoads ( void  ) const
inline

return the size of device load vector

Returns
device load vector size

Definition at line 268 of file GGEMSOpenCLManager.hh.

◆ GetNumberOfActivatedDevice()

GGsize GGEMSOpenCLManager::GetNumberOfActivatedDevice ( void  ) const
inline

get the number of activated devices

Returns
number of activated device

Definition at line 167 of file GGEMSOpenCLManager.hh.

◆ GetNumberOfDetectedDevice()

GGsize GGEMSOpenCLManager::GetNumberOfDetectedDevice ( void  ) const
inline

get the number of detected devices

Returns
number of detected device

Definition at line 160 of file GGEMSOpenCLManager.hh.

◆ GetRAMMemory()

GGsize GGEMSOpenCLManager::GetRAMMemory ( GGsize const &  device_index) const
inline

Get the RAM in bytes on OpenCL device.

Parameters
device_index- index of activated devices
Returns
RAM memory on a specific device

Definition at line 191 of file GGEMSOpenCLManager.hh.

◆ GetWorkGroupSize()

GGsize GGEMSOpenCLManager::GetWorkGroupSize ( void  ) const
inline

Get the work group size defined in GGEMS on activated OpenCL context.

Returns
Work group size

Definition at line 198 of file GGEMSOpenCLManager.hh.

◆ IsDoublePrecision()

bool GGEMSOpenCLManager::IsDoublePrecision ( GGsize const &  device_index) const
private

checking double precision on OpenCL device

Parameters
device_index- index of the device
Returns
true if double precision is supported by OpenCL device, otherwize false

Definition at line 1010 of file GGEMSOpenCLManager.cc.

◆ IsDoublePrecisionAtomicAddition()

bool GGEMSOpenCLManager::IsDoublePrecisionAtomicAddition ( GGsize const &  device_index) const

checking double precision atomic addition on OpenCL device

Parameters
device_index- index of device
Returns
true if double precision atomic addition is supported by OpenCL device, otherwize false

Definition at line 1020 of file GGEMSOpenCLManager.cc.

◆ IsReady()

bool GGEMSOpenCLManager::IsReady ( void  ) const
inline

check if an OpenCL device is activated

Returns
true is OpenCL manager is ready to use, it means a device is activated

Definition at line 275 of file GGEMSOpenCLManager.hh.

◆ operator=() [1/2]

GGEMSOpenCLManager & GGEMSOpenCLManager::operator= ( GGEMSOpenCLManager const &&  opencl_manager)
delete

Avoid copy of the singleton by rvalue reference.

Parameters
opencl_manager- rvalue reference on the singleton

◆ operator=() [2/2]

GGEMSOpenCLManager & GGEMSOpenCLManager::operator= ( GGEMSOpenCLManager const &  opencl_manager)
delete

Avoid assignement of the singleton by reference.

Parameters
opencl_manager- reference on the singleton

◆ PrintActivatedDevices()

void GGEMSOpenCLManager::PrintActivatedDevices ( void  ) const

print infos about activated devices

Definition at line 655 of file GGEMSOpenCLManager.cc.

◆ PrintBuildOptions()

void GGEMSOpenCLManager::PrintBuildOptions ( void  ) const

print global build options used during kernel compilation

Definition at line 646 of file GGEMSOpenCLManager.cc.

◆ PrintDeviceInfos()

void GGEMSOpenCLManager::PrintDeviceInfos ( void  ) const

print all informations about devices

Definition at line 479 of file GGEMSOpenCLManager.cc.

◆ PrintPlatformInfos()

void GGEMSOpenCLManager::PrintPlatformInfos ( void  ) const

print all the informations about the platform

Definition at line 461 of file GGEMSOpenCLManager.cc.

◆ ReleaseDeviceBuffer()

template<typename T >
void GGEMSOpenCLManager::ReleaseDeviceBuffer ( cl::Buffer *const  device_ptr,
T host_ptr,
GGsize const &  thread_index 
)

Get the device pointer on host to write on it. Mandatory after a GetDeviceBufferWrite ou GetDeviceBufferRead!!!

Parameters
device_ptr- pointer on device memory
host_ptr- pointer on host memory mapped on device memory
thread_index- index of the thread (= activated device index)
Template Parameters
T- type of host memory pointer to release

Definition at line 495 of file GGEMSOpenCLManager.hh.

Member Data Documentation

◆ build_options_

std::string GGEMSOpenCLManager::build_options_
private

list of default option to OpenCL compiler

Definition at line 463 of file GGEMSOpenCLManager.hh.

◆ contexts_

std::vector<cl::Context*> GGEMSOpenCLManager::contexts_
private

OpenCL contexts

Definition at line 466 of file GGEMSOpenCLManager.hh.

◆ device_address_bits_

std::vector<GGuint> GGEMSOpenCLManager::device_address_bits_
private

Address Bits

Definition at line 418 of file GGEMSOpenCLManager.hh.

◆ device_available_

std::vector<GGbool> GGEMSOpenCLManager::device_available_
private

Flag on device availability

Definition at line 419 of file GGEMSOpenCLManager.hh.

◆ device_balancing_

std::vector<GGfloat> GGEMSOpenCLManager::device_balancing_
private

Device balancing

Definition at line 460 of file GGEMSOpenCLManager.hh.

◆ device_compiler_available_

std::vector<GGbool> GGEMSOpenCLManager::device_compiler_available_
private

Flag on compiler availability

Definition at line 420 of file GGEMSOpenCLManager.hh.

◆ device_double_fp_config_

std::vector<cl_device_fp_config> GGEMSOpenCLManager::device_double_fp_config_
private

Double precision capability

Definition at line 423 of file GGEMSOpenCLManager.hh.

◆ device_driver_version_

std::vector<std::string> GGEMSOpenCLManager::device_driver_version_
private

Driver version of the device

Definition at line 402 of file GGEMSOpenCLManager.hh.

◆ device_endian_little_

std::vector<GGbool> GGEMSOpenCLManager::device_endian_little_
private

Endian little

Definition at line 424 of file GGEMSOpenCLManager.hh.

◆ device_error_correction_support_

std::vector<GGbool> GGEMSOpenCLManager::device_error_correction_support_
private

Error correction support

Definition at line 426 of file GGEMSOpenCLManager.hh.

◆ device_execution_capabilities_

std::vector<cl_device_exec_capabilities> GGEMSOpenCLManager::device_execution_capabilities_
private

Execution capabilities

Definition at line 427 of file GGEMSOpenCLManager.hh.

◆ device_extensions_

std::vector<std::string> GGEMSOpenCLManager::device_extensions_
private

Extensions

Definition at line 425 of file GGEMSOpenCLManager.hh.

◆ device_global_mem_cache_size_

std::vector<GGulong> GGEMSOpenCLManager::device_global_mem_cache_size_
private

Global memory cache size

Definition at line 428 of file GGEMSOpenCLManager.hh.

◆ device_global_mem_cache_type_

std::vector<cl_device_mem_cache_type> GGEMSOpenCLManager::device_global_mem_cache_type_
private

Global memory cache type

Definition at line 429 of file GGEMSOpenCLManager.hh.

◆ device_global_mem_cacheline_size_

std::vector<GGuint> GGEMSOpenCLManager::device_global_mem_cacheline_size_
private

Global memory cache line size

Definition at line 430 of file GGEMSOpenCLManager.hh.

◆ device_global_mem_size_

std::vector<GGulong> GGEMSOpenCLManager::device_global_mem_size_
private

Global memory size

Definition at line 431 of file GGEMSOpenCLManager.hh.

◆ device_half_fp_config_

std::vector<cl_device_fp_config> GGEMSOpenCLManager::device_half_fp_config_
private

Half precision capability

Definition at line 421 of file GGEMSOpenCLManager.hh.

◆ device_host_unified_memory_

std::vector<GGbool> GGEMSOpenCLManager::device_host_unified_memory_
private

Host unified memory

Definition at line 434 of file GGEMSOpenCLManager.hh.

◆ device_image2D_max_height_

std::vector<GGsize> GGEMSOpenCLManager::device_image2D_max_height_
private

Max height of image 2D

Definition at line 439 of file GGEMSOpenCLManager.hh.

◆ device_image2D_max_width_

std::vector<GGsize> GGEMSOpenCLManager::device_image2D_max_width_
private

Max width of image 2D

Definition at line 438 of file GGEMSOpenCLManager.hh.

◆ device_image3D_max_depth_

std::vector<GGsize> GGEMSOpenCLManager::device_image3D_max_depth_
private

Max depth of image 3D

Definition at line 442 of file GGEMSOpenCLManager.hh.

◆ device_image3D_max_height_

std::vector<GGsize> GGEMSOpenCLManager::device_image3D_max_height_
private

Max height of image 3D

Definition at line 441 of file GGEMSOpenCLManager.hh.

◆ device_image3D_max_width_

std::vector<GGsize> GGEMSOpenCLManager::device_image3D_max_width_
private

Max width of image 3D

Definition at line 440 of file GGEMSOpenCLManager.hh.

◆ device_image_max_array_size_

std::vector<GGsize> GGEMSOpenCLManager::device_image_max_array_size_
private

Max size of image array

Definition at line 435 of file GGEMSOpenCLManager.hh.

◆ device_image_max_buffer_size_

std::vector<GGsize> GGEMSOpenCLManager::device_image_max_buffer_size_
private

Max size of image buffer

Definition at line 436 of file GGEMSOpenCLManager.hh.

◆ device_image_support_

std::vector<GGbool> GGEMSOpenCLManager::device_image_support_
private

Image support

Definition at line 437 of file GGEMSOpenCLManager.hh.

◆ device_indices_

std::vector<GGsize> GGEMSOpenCLManager::device_indices_
private

Index of the activated device

Definition at line 392 of file GGEMSOpenCLManager.hh.

◆ device_local_mem_size_

std::vector<GGulong> GGEMSOpenCLManager::device_local_mem_size_
private

Local memory size

Definition at line 432 of file GGEMSOpenCLManager.hh.

◆ device_local_mem_type_

std::vector<cl_device_local_mem_type> GGEMSOpenCLManager::device_local_mem_type_
private

Local memory type

Definition at line 433 of file GGEMSOpenCLManager.hh.

◆ device_max_clock_frequency_

std::vector<GGuint> GGEMSOpenCLManager::device_max_clock_frequency_
private

Max frequency of device

Definition at line 445 of file GGEMSOpenCLManager.hh.

◆ device_max_compute_units_

std::vector<GGuint> GGEMSOpenCLManager::device_max_compute_units_
private

Max compute units

Definition at line 446 of file GGEMSOpenCLManager.hh.

◆ device_max_constant_args_

std::vector<GGuint> GGEMSOpenCLManager::device_max_constant_args_
private

Max constant arguments in kernel

Definition at line 447 of file GGEMSOpenCLManager.hh.

◆ device_max_constant_buffer_size_

std::vector<GGulong> GGEMSOpenCLManager::device_max_constant_buffer_size_
private

Max constant buffer size

Definition at line 448 of file GGEMSOpenCLManager.hh.

◆ device_max_mem_alloc_size_

std::vector<GGulong> GGEMSOpenCLManager::device_max_mem_alloc_size_
private

Max memory allocation size

Definition at line 449 of file GGEMSOpenCLManager.hh.

◆ device_max_parameter_size_

std::vector<GGsize> GGEMSOpenCLManager::device_max_parameter_size_
private

Max Parameter size in kernel

Definition at line 450 of file GGEMSOpenCLManager.hh.

◆ device_max_read_image_args_

std::vector<GGuint> GGEMSOpenCLManager::device_max_read_image_args_
private

Max read image read by kernel in same time

Definition at line 443 of file GGEMSOpenCLManager.hh.

◆ device_max_samplers_

std::vector<GGuint> GGEMSOpenCLManager::device_max_samplers_
private

Max number of samplers in kernel

Definition at line 451 of file GGEMSOpenCLManager.hh.

◆ device_max_work_group_size_

std::vector<GGsize> GGEMSOpenCLManager::device_max_work_group_size_
private

Max Work group size

Definition at line 452 of file GGEMSOpenCLManager.hh.

◆ device_max_work_item_dimensions_

std::vector<GGuint> GGEMSOpenCLManager::device_max_work_item_dimensions_
private

Maximum work item dimensions

Definition at line 453 of file GGEMSOpenCLManager.hh.

◆ device_max_work_item_sizes_

std::vector<GGsize> GGEMSOpenCLManager::device_max_work_item_sizes_
private

Maximum work item sizes

Definition at line 454 of file GGEMSOpenCLManager.hh.

◆ device_max_write_image_args_

std::vector<GGuint> GGEMSOpenCLManager::device_max_write_image_args_
private

Max write image read by kernel in same time

Definition at line 444 of file GGEMSOpenCLManager.hh.

◆ device_mem_base_addr_align_

std::vector<GGuint> GGEMSOpenCLManager::device_mem_base_addr_align_
private

Alignment memory

Definition at line 455 of file GGEMSOpenCLManager.hh.

◆ device_name_

std::vector<std::string> GGEMSOpenCLManager::device_name_
private

Name of the device

Definition at line 397 of file GGEMSOpenCLManager.hh.

◆ device_native_vector_width_char_

std::vector<GGuint> GGEMSOpenCLManager::device_native_vector_width_char_
private

Native vector for char integer

Definition at line 404 of file GGEMSOpenCLManager.hh.

◆ device_native_vector_width_double_

std::vector<GGuint> GGEMSOpenCLManager::device_native_vector_width_double_
private

Native vector for double precision

Definition at line 410 of file GGEMSOpenCLManager.hh.

◆ device_native_vector_width_float_

std::vector<GGuint> GGEMSOpenCLManager::device_native_vector_width_float_
private

Native vector for single precision

Definition at line 409 of file GGEMSOpenCLManager.hh.

◆ device_native_vector_width_half_

std::vector<GGuint> GGEMSOpenCLManager::device_native_vector_width_half_
private

Native vector for half precision

Definition at line 408 of file GGEMSOpenCLManager.hh.

◆ device_native_vector_width_int_

std::vector<GGuint> GGEMSOpenCLManager::device_native_vector_width_int_
private

Native vector for int integer

Definition at line 406 of file GGEMSOpenCLManager.hh.

◆ device_native_vector_width_long_

std::vector<GGuint> GGEMSOpenCLManager::device_native_vector_width_long_
private

Native vector for long integer

Definition at line 407 of file GGEMSOpenCLManager.hh.

◆ device_native_vector_width_short_

std::vector<GGuint> GGEMSOpenCLManager::device_native_vector_width_short_
private

Native vector for short integer

Definition at line 405 of file GGEMSOpenCLManager.hh.

◆ device_opencl_c_version_

std::vector<std::string> GGEMSOpenCLManager::device_opencl_c_version_
private

OpenCL C version

Definition at line 403 of file GGEMSOpenCLManager.hh.

◆ device_partition_affinity_domain_

std::vector<cl_device_affinity_domain> GGEMSOpenCLManager::device_partition_affinity_domain_
private

Partition affinity domain

Definition at line 457 of file GGEMSOpenCLManager.hh.

◆ device_partition_max_sub_devices_

std::vector<GGuint> GGEMSOpenCLManager::device_partition_max_sub_devices_
private

Partition affinity domain

Definition at line 458 of file GGEMSOpenCLManager.hh.

◆ device_preferred_vector_width_char_

std::vector<GGuint> GGEMSOpenCLManager::device_preferred_vector_width_char_
private

Preferred vector for char integer

Definition at line 411 of file GGEMSOpenCLManager.hh.

◆ device_preferred_vector_width_double_

std::vector<GGuint> GGEMSOpenCLManager::device_preferred_vector_width_double_
private

Preferred vector for double precision

Definition at line 417 of file GGEMSOpenCLManager.hh.

◆ device_preferred_vector_width_float_

std::vector<GGuint> GGEMSOpenCLManager::device_preferred_vector_width_float_
private

Preferred vector for single precision

Definition at line 416 of file GGEMSOpenCLManager.hh.

◆ device_preferred_vector_width_half_

std::vector<GGuint> GGEMSOpenCLManager::device_preferred_vector_width_half_
private

Preferred vector for half precision

Definition at line 415 of file GGEMSOpenCLManager.hh.

◆ device_preferred_vector_width_int_

std::vector<GGuint> GGEMSOpenCLManager::device_preferred_vector_width_int_
private

Preferred vector for int integer

Definition at line 413 of file GGEMSOpenCLManager.hh.

◆ device_preferred_vector_width_long_

std::vector<GGuint> GGEMSOpenCLManager::device_preferred_vector_width_long_
private

Preferred vector for long integer

Definition at line 414 of file GGEMSOpenCLManager.hh.

◆ device_preferred_vector_width_short_

std::vector<GGuint> GGEMSOpenCLManager::device_preferred_vector_width_short_
private

Preferred vector for short integer

Definition at line 412 of file GGEMSOpenCLManager.hh.

◆ device_printf_buffer_size_

std::vector<GGsize> GGEMSOpenCLManager::device_printf_buffer_size_
private

Size of buffer for printf in kernel

Definition at line 456 of file GGEMSOpenCLManager.hh.

◆ device_profile_

std::vector<std::string> GGEMSOpenCLManager::device_profile_
private

Profile of the device

Definition at line 400 of file GGEMSOpenCLManager.hh.

◆ device_profiling_timer_resolution_

std::vector<GGsize> GGEMSOpenCLManager::device_profiling_timer_resolution_
private

Timer resolution

Definition at line 459 of file GGEMSOpenCLManager.hh.

◆ device_single_fp_config_

std::vector<cl_device_fp_config> GGEMSOpenCLManager::device_single_fp_config_
private

Single precision capability

Definition at line 422 of file GGEMSOpenCLManager.hh.

◆ device_type_

std::vector<cl_device_type> GGEMSOpenCLManager::device_type_
private

Type of device

Definition at line 396 of file GGEMSOpenCLManager.hh.

◆ device_vendor_

std::vector<std::string> GGEMSOpenCLManager::device_vendor_
private

Vendor of the device

Definition at line 398 of file GGEMSOpenCLManager.hh.

◆ device_vendor_id_

std::vector<GGuint> GGEMSOpenCLManager::device_vendor_id_
private

Vendor ID of the device

Definition at line 399 of file GGEMSOpenCLManager.hh.

◆ device_version_

std::vector<std::string> GGEMSOpenCLManager::device_version_
private

Version of the device

Definition at line 401 of file GGEMSOpenCLManager.hh.

◆ devices_

std::vector<cl::Device*> GGEMSOpenCLManager::devices_
private

List of detected device

Definition at line 391 of file GGEMSOpenCLManager.hh.

◆ events_

std::vector<cl::Event*> GGEMSOpenCLManager::events_
private

OpenCL events

Definition at line 468 of file GGEMSOpenCLManager.hh.

◆ kernel_compilation_options_

std::vector<std::string> GGEMSOpenCLManager::kernel_compilation_options_
private

List of compilation options for kernel

Definition at line 472 of file GGEMSOpenCLManager.hh.

◆ kernels_

std::vector<cl::Kernel*> GGEMSOpenCLManager::kernels_
private

List of kernels for each device

Definition at line 471 of file GGEMSOpenCLManager.hh.

◆ platform_extensions_

std::vector<std::string> GGEMSOpenCLManager::platform_extensions_
private

List of the extension names

Definition at line 388 of file GGEMSOpenCLManager.hh.

◆ platform_name_

std::vector<std::string> GGEMSOpenCLManager::platform_name_
private

Platform name

Definition at line 386 of file GGEMSOpenCLManager.hh.

◆ platform_profile_

std::vector<std::string> GGEMSOpenCLManager::platform_profile_
private

OpenCL profile

Definition at line 384 of file GGEMSOpenCLManager.hh.

◆ platform_vendor_

std::vector<std::string> GGEMSOpenCLManager::platform_vendor_
private

Vendor of the platform

Definition at line 387 of file GGEMSOpenCLManager.hh.

◆ platform_version_

std::vector<std::string> GGEMSOpenCLManager::platform_version_
private

OpenCL version supported by the implementation

Definition at line 385 of file GGEMSOpenCLManager.hh.

◆ platforms_

std::vector<cl::Platform> GGEMSOpenCLManager::platforms_
private

List of detected platform

Definition at line 382 of file GGEMSOpenCLManager.hh.

◆ queues_

std::vector<cl::CommandQueue*> GGEMSOpenCLManager::queues_
private

OpenCL command queues

Definition at line 467 of file GGEMSOpenCLManager.hh.

◆ vendors_

VendorUMap GGEMSOpenCLManager::vendors_
private

UMap storing vendor name and an alias

Definition at line 394 of file GGEMSOpenCLManager.hh.

◆ work_group_size_

GGsize GGEMSOpenCLManager::work_group_size_
private

Work group size by GGEMS, here 64

Definition at line 393 of file GGEMSOpenCLManager.hh.


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