Home ⌂Doc Index ◂Up ▴
Intel(R) Threading Building Blocks Doxygen Documentation  version 4.2.3
tbb::flow::interface11::opencl_device Class Reference

#include <flow_graph_opencl_node.h>

Collaboration diagram for tbb::flow::interface11::opencl_device:

Public Types

enum  : device_id_type { unknown = device_id_type( -2 ), host = device_id_type( -1 ) }
 
typedef size_t device_id_type
 

Public Member Functions

 opencl_device ()
 
 opencl_device (cl_device_id d_id)
 
 opencl_device (cl_device_id cl_d_id, device_id_type device_id)
 
std::string platform_profile () const
 
std::string platform_version () const
 
std::string platform_name () const
 
std::string platform_vendor () const
 
std::string platform_extensions () const
 
template<typename T >
void info (cl_device_info i, T &t) const
 
std::string version () const
 
int major_version () const
 
int minor_version () const
 
bool out_of_order_exec_mode_on_host_present () const
 
bool out_of_order_exec_mode_on_device_present () const
 
std::array< size_t, 3 > max_work_item_sizes () const
 
size_t max_work_group_size () const
 
bool built_in_kernel_available (const std::string &k) const
 
std::string built_in_kernels () const
 
std::string name () const
 
cl_bool available () const
 
cl_bool compiler_available () const
 
cl_bool linker_available () const
 
bool extension_available (const std::string &ext) const
 
std::string extensions () const
 
cl_device_type type () const
 
std::string vendor () const
 
cl_uint address_bits () const
 
cl_device_id device_id () const
 
cl_command_queue command_queue () const
 
void set_command_queue (cl_command_queue cmd_queue)
 
cl_platform_id platform_id () const
 

Private Attributes

device_id_type my_device_id
 
cl_device_id my_cl_device_id
 
cl_command_queue my_cl_command_queue
 

Friends

template<typename DeviceFilter >
class opencl_factory
 
template<typename Factory >
class opencl_memory
 
template<typename Factory >
class opencl_program
 
bool operator== (opencl_device d1, opencl_device d2)
 

Detailed Description

Definition at line 119 of file flow_graph_opencl_node.h.

Member Typedef Documentation

◆ device_id_type

Member Enumeration Documentation

◆ anonymous enum

Constructor & Destructor Documentation

◆ opencl_device() [1/3]

tbb::flow::interface11::opencl_device::opencl_device ( )
inline

◆ opencl_device() [2/3]

tbb::flow::interface11::opencl_device::opencl_device ( cl_device_id  d_id)
inline

◆ opencl_device() [3/3]

tbb::flow::interface11::opencl_device::opencl_device ( cl_device_id  cl_d_id,
device_id_type  device_id 
)
inline

Member Function Documentation

◆ address_bits()

cl_uint tbb::flow::interface11::opencl_device::address_bits ( ) const
inline

Definition at line 226 of file flow_graph_opencl_node.h.

226  {
227  return device_info<cl_uint>( my_cl_device_id, CL_DEVICE_ADDRESS_BITS );
228  }

◆ available()

cl_bool tbb::flow::interface11::opencl_device::available ( ) const
inline

Definition at line 200 of file flow_graph_opencl_node.h.

200  {
201  return device_info<cl_bool>( my_cl_device_id, CL_DEVICE_AVAILABLE );
202  }

◆ built_in_kernel_available()

bool tbb::flow::interface11::opencl_device::built_in_kernel_available ( const std::string &  k) const
inline

Definition at line 189 of file flow_graph_opencl_node.h.

189  {
190  const std::string semi = ";";
191  // Added semicolumns to force an exact match (to avoid a partial match, e.g. "add" is partly matched with "madd").
192  return (semi + built_in_kernels() + semi).find( semi + k + semi ) != std::string::npos;
193  }

◆ built_in_kernels()

std::string tbb::flow::interface11::opencl_device::built_in_kernels ( ) const
inline

Definition at line 194 of file flow_graph_opencl_node.h.

194  {
195  return device_info<std::string>( my_cl_device_id, CL_DEVICE_BUILT_IN_KERNELS );
196  }

◆ command_queue()

cl_command_queue tbb::flow::interface11::opencl_device::command_queue ( ) const
inline

Definition at line 234 of file flow_graph_opencl_node.h.

234  {
235  return my_cl_command_queue;
236  }

◆ compiler_available()

cl_bool tbb::flow::interface11::opencl_device::compiler_available ( ) const
inline

Definition at line 203 of file flow_graph_opencl_node.h.

203  {
204  return device_info<cl_bool>( my_cl_device_id, CL_DEVICE_COMPILER_AVAILABLE );
205  }

◆ device_id()

cl_device_id tbb::flow::interface11::opencl_device::device_id ( ) const
inline

Definition at line 230 of file flow_graph_opencl_node.h.

230  {
231  return my_cl_device_id;
232  }

◆ extension_available()

bool tbb::flow::interface11::opencl_device::extension_available ( const std::string &  ext) const
inline

Definition at line 209 of file flow_graph_opencl_node.h.

209  {
210  const std::string space = " ";
211  // Added space to force an exact match (to avoid a partial match, e.g. "ext" is partly matched with "ext2").
212  return (space + extensions() + space).find( space + ext + space ) != std::string::npos;
213  }

◆ extensions()

std::string tbb::flow::interface11::opencl_device::extensions ( ) const
inline

Definition at line 214 of file flow_graph_opencl_node.h.

214  {
215  return device_info<std::string>( my_cl_device_id, CL_DEVICE_EXTENSIONS );
216  }

◆ info()

template<typename T >
void tbb::flow::interface11::opencl_device::info ( cl_device_info  i,
T &  t 
) const
inline

Definition at line 150 of file flow_graph_opencl_node.h.

150  {
151  t = device_info<T>( my_cl_device_id, i );
152  }

◆ linker_available()

cl_bool tbb::flow::interface11::opencl_device::linker_available ( ) const
inline

Definition at line 206 of file flow_graph_opencl_node.h.

206  {
207  return device_info<cl_bool>( my_cl_device_id, CL_DEVICE_LINKER_AVAILABLE );
208  }

◆ major_version()

int tbb::flow::interface11::opencl_device::major_version ( ) const
inline

Definition at line 157 of file flow_graph_opencl_node.h.

157  {
158  int major;
159  std::sscanf( version().c_str(), "OpenCL %d", &major );
160  return major;
161  }

◆ max_work_group_size()

size_t tbb::flow::interface11::opencl_device::max_work_group_size ( ) const
inline

Definition at line 186 of file flow_graph_opencl_node.h.

186  {
187  return device_info<size_t>( my_cl_device_id, CL_DEVICE_MAX_WORK_GROUP_SIZE );
188  }

◆ max_work_item_sizes()

std::array<size_t, 3> tbb::flow::interface11::opencl_device::max_work_item_sizes ( ) const
inline

Definition at line 183 of file flow_graph_opencl_node.h.

183  {
184  return device_info<std::array<size_t, 3>>( my_cl_device_id, CL_DEVICE_MAX_WORK_ITEM_SIZES );
185  }

◆ minor_version()

int tbb::flow::interface11::opencl_device::minor_version ( ) const
inline

Definition at line 162 of file flow_graph_opencl_node.h.

162  {
163  int major, minor;
164  std::sscanf( version().c_str(), "OpenCL %d.%d", &major, &minor );
165  return minor;
166  }

◆ name()

std::string tbb::flow::interface11::opencl_device::name ( ) const
inline

Definition at line 197 of file flow_graph_opencl_node.h.

197  {
198  return device_info<std::string>( my_cl_device_id, CL_DEVICE_NAME );
199  }

◆ out_of_order_exec_mode_on_device_present()

bool tbb::flow::interface11::opencl_device::out_of_order_exec_mode_on_device_present ( ) const
inline

Definition at line 175 of file flow_graph_opencl_node.h.

175  {
176 #if CL_VERSION_2_0
177  if ( major_version() >= 2 )
178  return (device_info<cl_command_queue_properties>( my_cl_device_id, CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES ) & CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE) != 0;
179  else
180 #endif /* CL_VERSION_2_0 */
181  return false;
182  }

◆ out_of_order_exec_mode_on_host_present()

bool tbb::flow::interface11::opencl_device::out_of_order_exec_mode_on_host_present ( ) const
inline

Definition at line 167 of file flow_graph_opencl_node.h.

167  {
168 #if CL_VERSION_2_0
169  if ( major_version() >= 2 )
170  return (device_info<cl_command_queue_properties>( my_cl_device_id, CL_DEVICE_QUEUE_ON_HOST_PROPERTIES ) & CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE) != 0;
171  else
172 #endif /* CL_VERSION_2_0 */
173  return (device_info<cl_command_queue_properties>( my_cl_device_id, CL_DEVICE_QUEUE_PROPERTIES ) & CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE) != 0;
174  }

◆ platform_extensions()

std::string tbb::flow::interface11::opencl_device::platform_extensions ( ) const
inline

Definition at line 145 of file flow_graph_opencl_node.h.

145  {
146  return platform_info<std::string>( platform_id(), CL_PLATFORM_EXTENSIONS );
147  }

◆ platform_id()

cl_platform_id tbb::flow::interface11::opencl_device::platform_id ( ) const
inline

Definition at line 242 of file flow_graph_opencl_node.h.

242  {
243  return device_info<cl_platform_id>( my_cl_device_id, CL_DEVICE_PLATFORM );
244  }

◆ platform_name()

std::string tbb::flow::interface11::opencl_device::platform_name ( ) const
inline

Definition at line 139 of file flow_graph_opencl_node.h.

139  {
140  return platform_info<std::string>( platform_id(), CL_PLATFORM_NAME );
141  }

◆ platform_profile()

std::string tbb::flow::interface11::opencl_device::platform_profile ( ) const
inline

Definition at line 133 of file flow_graph_opencl_node.h.

133  {
134  return platform_info<std::string>( platform_id(), CL_PLATFORM_PROFILE );
135  }

◆ platform_vendor()

std::string tbb::flow::interface11::opencl_device::platform_vendor ( ) const
inline

Definition at line 142 of file flow_graph_opencl_node.h.

142  {
143  return platform_info<std::string>( platform_id(), CL_PLATFORM_VENDOR );
144  }

◆ platform_version()

std::string tbb::flow::interface11::opencl_device::platform_version ( ) const
inline

Definition at line 136 of file flow_graph_opencl_node.h.

136  {
137  return platform_info<std::string>( platform_id(), CL_PLATFORM_VERSION );
138  }

◆ set_command_queue()

void tbb::flow::interface11::opencl_device::set_command_queue ( cl_command_queue  cmd_queue)
inline

Definition at line 238 of file flow_graph_opencl_node.h.

238  {
239  my_cl_command_queue = cmd_queue;
240  }

◆ type()

cl_device_type tbb::flow::interface11::opencl_device::type ( ) const
inline

Definition at line 218 of file flow_graph_opencl_node.h.

218  {
219  return device_info<cl_device_type>( my_cl_device_id, CL_DEVICE_TYPE );
220  }

◆ vendor()

std::string tbb::flow::interface11::opencl_device::vendor ( ) const
inline

Definition at line 222 of file flow_graph_opencl_node.h.

222  {
223  return device_info<std::string>( my_cl_device_id, CL_DEVICE_VENDOR );
224  }

◆ version()

std::string tbb::flow::interface11::opencl_device::version ( ) const
inline

Definition at line 153 of file flow_graph_opencl_node.h.

153  {
154  // The version string format: OpenCL<space><major_version.minor_version><space><vendor-specific information>
155  return device_info<std::string>( my_cl_device_id, CL_DEVICE_VERSION );
156  }

Friends And Related Function Documentation

◆ opencl_factory

template<typename DeviceFilter >
friend class opencl_factory
friend

Definition at line 255 of file flow_graph_opencl_node.h.

◆ opencl_memory

template<typename Factory >
friend class opencl_memory
friend

Definition at line 257 of file flow_graph_opencl_node.h.

◆ opencl_program

template<typename Factory >
friend class opencl_program
friend

Definition at line 259 of file flow_graph_opencl_node.h.

◆ operator==

bool operator== ( opencl_device  d1,
opencl_device  d2 
)
friend

Definition at line 252 of file flow_graph_opencl_node.h.

252 { return d1.my_cl_device_id == d2.my_cl_device_id; }

Member Data Documentation

◆ my_cl_command_queue

◆ my_cl_device_id

cl_device_id tbb::flow::interface11::opencl_device::my_cl_device_id
private

Definition at line 249 of file flow_graph_opencl_node.h.

◆ my_device_id

device_id_type tbb::flow::interface11::opencl_device::my_device_id
private

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

Copyright © 2005-2020 Intel Corporation. All Rights Reserved.

Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are registered trademarks or trademarks of Intel Corporation or its subsidiaries in the United States and other countries.

* Other names and brands may be claimed as the property of others.