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 108 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 215 of file flow_graph_opencl_node.h.

215  {
216  return device_info<cl_uint>( my_cl_device_id, CL_DEVICE_ADDRESS_BITS );
217  }

◆ available()

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

Definition at line 189 of file flow_graph_opencl_node.h.

189  {
190  return device_info<cl_bool>( my_cl_device_id, CL_DEVICE_AVAILABLE );
191  }

◆ built_in_kernel_available()

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

Definition at line 178 of file flow_graph_opencl_node.h.

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

◆ built_in_kernels()

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

Definition at line 183 of file flow_graph_opencl_node.h.

183  {
184  return device_info<std::string>( my_cl_device_id, CL_DEVICE_BUILT_IN_KERNELS );
185  }

◆ command_queue()

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

Definition at line 223 of file flow_graph_opencl_node.h.

223  {
224  return my_cl_command_queue;
225  }

◆ compiler_available()

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

Definition at line 192 of file flow_graph_opencl_node.h.

Referenced by tbb::flow::interface11::opencl_program< Factory >::init().

192  {
193  return device_info<cl_bool>( my_cl_device_id, CL_DEVICE_COMPILER_AVAILABLE );
194  }
Here is the caller graph for this function:

◆ device_id()

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

Definition at line 219 of file flow_graph_opencl_node.h.

219  {
220  return my_cl_device_id;
221  }

◆ extension_available()

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

Definition at line 198 of file flow_graph_opencl_node.h.

198  {
199  const std::string space = " ";
200  // Added space to force an exact match (to avoid a partial match, e.g. "ext" is partly matched with "ext2").
201  return (space + extensions() + space).find( space + ext + space ) != std::string::npos;
202  }

◆ extensions()

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

Definition at line 203 of file flow_graph_opencl_node.h.

203  {
204  return device_info<std::string>( my_cl_device_id, CL_DEVICE_EXTENSIONS );
205  }

◆ info()

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

Definition at line 139 of file flow_graph_opencl_node.h.

139  {
140  t = device_info<T>( my_cl_device_id, i );
141  }

◆ linker_available()

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

Definition at line 195 of file flow_graph_opencl_node.h.

Referenced by tbb::flow::interface11::opencl_program< Factory >::init().

195  {
196  return device_info<cl_bool>( my_cl_device_id, CL_DEVICE_LINKER_AVAILABLE );
197  }
Here is the caller graph for this function:

◆ major_version()

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

Definition at line 146 of file flow_graph_opencl_node.h.

146  {
147  int major;
148  std::sscanf( version().c_str(), "OpenCL %d", &major );
149  return major;
150  }

◆ max_work_group_size()

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

Definition at line 175 of file flow_graph_opencl_node.h.

175  {
176  return device_info<size_t>( my_cl_device_id, CL_DEVICE_MAX_WORK_GROUP_SIZE );
177  }

◆ max_work_item_sizes()

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

Definition at line 172 of file flow_graph_opencl_node.h.

172  {
173  return device_info<std::array<size_t, 3>>( my_cl_device_id, CL_DEVICE_MAX_WORK_ITEM_SIZES );
174  }

◆ minor_version()

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

Definition at line 151 of file flow_graph_opencl_node.h.

151  {
152  int major, minor;
153  std::sscanf( version().c_str(), "OpenCL %d.%d", &major, &minor );
154  return minor;
155  }

◆ name()

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

Definition at line 186 of file flow_graph_opencl_node.h.

186  {
187  return device_info<std::string>( my_cl_device_id, CL_DEVICE_NAME );
188  }

◆ 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 164 of file flow_graph_opencl_node.h.

164  {
165 #if CL_VERSION_2_0
166  if ( major_version() >= 2 )
167  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;
168  else
169 #endif /* CL_VERSION_2_0 */
170  return false;
171  }

◆ 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 156 of file flow_graph_opencl_node.h.

156  {
157 #if CL_VERSION_2_0
158  if ( major_version() >= 2 )
159  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;
160  else
161 #endif /* CL_VERSION_2_0 */
162  return (device_info<cl_command_queue_properties>( my_cl_device_id, CL_DEVICE_QUEUE_PROPERTIES ) & CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE) != 0;
163  }

◆ platform_extensions()

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

Definition at line 134 of file flow_graph_opencl_node.h.

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

◆ platform_id()

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

Definition at line 231 of file flow_graph_opencl_node.h.

231  {
232  return device_info<cl_platform_id>( my_cl_device_id, CL_DEVICE_PLATFORM );
233  }

◆ platform_name()

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

Definition at line 128 of file flow_graph_opencl_node.h.

128  {
129  return platform_info<std::string>( platform_id(), CL_PLATFORM_NAME );
130  }

◆ platform_profile()

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

Definition at line 122 of file flow_graph_opencl_node.h.

122  {
123  return platform_info<std::string>( platform_id(), CL_PLATFORM_PROFILE );
124  }

◆ platform_vendor()

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

Definition at line 131 of file flow_graph_opencl_node.h.

131  {
132  return platform_info<std::string>( platform_id(), CL_PLATFORM_VENDOR );
133  }

◆ platform_version()

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

Definition at line 125 of file flow_graph_opencl_node.h.

125  {
126  return platform_info<std::string>( platform_id(), CL_PLATFORM_VERSION );
127  }

◆ set_command_queue()

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

Definition at line 227 of file flow_graph_opencl_node.h.

227  {
228  my_cl_command_queue = cmd_queue;
229  }

◆ type()

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

Definition at line 207 of file flow_graph_opencl_node.h.

207  {
208  return device_info<cl_device_type>( my_cl_device_id, CL_DEVICE_TYPE );
209  }

◆ vendor()

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

Definition at line 211 of file flow_graph_opencl_node.h.

211  {
212  return device_info<std::string>( my_cl_device_id, CL_DEVICE_VENDOR );
213  }

◆ version()

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

Definition at line 142 of file flow_graph_opencl_node.h.

142  {
143  // The version string format: OpenCL<space><major_version.minor_version><space><vendor-specific information>
144  return device_info<std::string>( my_cl_device_id, CL_DEVICE_VERSION );
145  }

Friends And Related Function Documentation

◆ opencl_factory

template<typename DeviceFilter >
friend class opencl_factory
friend

Definition at line 244 of file flow_graph_opencl_node.h.

◆ opencl_memory

template<typename Factory >
friend class opencl_memory
friend

Definition at line 246 of file flow_graph_opencl_node.h.

◆ opencl_program

template<typename Factory >
friend class opencl_program
friend

Definition at line 248 of file flow_graph_opencl_node.h.

◆ operator==

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

Definition at line 241 of file flow_graph_opencl_node.h.

241 { 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 238 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-2019 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.