Intel(R) Threading Building Blocks Doxygen Documentation  version 4.2.3
tbb::flow::interface10::opencl_device Class Reference

#include <flow_graph_opencl_node.h>

Collaboration diagram for tbb::flow::interface10::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 105 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::interface10::opencl_device::opencl_device ( )
inline

◆ opencl_device() [2/3]

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

◆ opencl_device() [3/3]

tbb::flow::interface10::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::interface10::opencl_device::address_bits ( ) const
inline

Definition at line 212 of file flow_graph_opencl_node.h.

212  {
213  return device_info<cl_uint>( my_cl_device_id, CL_DEVICE_ADDRESS_BITS );
214  }

◆ available()

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

Definition at line 186 of file flow_graph_opencl_node.h.

186  {
187  return device_info<cl_bool>( my_cl_device_id, CL_DEVICE_AVAILABLE );
188  }

◆ built_in_kernel_available()

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

Definition at line 175 of file flow_graph_opencl_node.h.

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

◆ built_in_kernels()

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

Definition at line 180 of file flow_graph_opencl_node.h.

180  {
181  return device_info<std::string>( my_cl_device_id, CL_DEVICE_BUILT_IN_KERNELS );
182  }

◆ command_queue()

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

Definition at line 220 of file flow_graph_opencl_node.h.

220  {
221  return my_cl_command_queue;
222  }

◆ compiler_available()

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

Definition at line 189 of file flow_graph_opencl_node.h.

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

189  {
190  return device_info<cl_bool>( my_cl_device_id, CL_DEVICE_COMPILER_AVAILABLE );
191  }
Here is the caller graph for this function:

◆ device_id()

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

Definition at line 216 of file flow_graph_opencl_node.h.

216  {
217  return my_cl_device_id;
218  }

◆ extension_available()

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

Definition at line 195 of file flow_graph_opencl_node.h.

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

◆ extensions()

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

Definition at line 200 of file flow_graph_opencl_node.h.

200  {
201  return device_info<std::string>( my_cl_device_id, CL_DEVICE_EXTENSIONS );
202  }

◆ info()

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

Definition at line 136 of file flow_graph_opencl_node.h.

136  {
137  t = device_info<T>( my_cl_device_id, i );
138  }

◆ linker_available()

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

Definition at line 192 of file flow_graph_opencl_node.h.

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

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

◆ major_version()

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

Definition at line 143 of file flow_graph_opencl_node.h.

143  {
144  int major;
145  std::sscanf( version().c_str(), "OpenCL %d", &major );
146  return major;
147  }

◆ max_work_group_size()

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

Definition at line 172 of file flow_graph_opencl_node.h.

172  {
173  return device_info<size_t>( my_cl_device_id, CL_DEVICE_MAX_WORK_GROUP_SIZE );
174  }

◆ max_work_item_sizes()

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

Definition at line 169 of file flow_graph_opencl_node.h.

169  {
170  return device_info<std::array<size_t, 3>>( my_cl_device_id, CL_DEVICE_MAX_WORK_ITEM_SIZES );
171  }

◆ minor_version()

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

Definition at line 148 of file flow_graph_opencl_node.h.

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

◆ name()

std::string tbb::flow::interface10::opencl_device::name ( ) 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_NAME );
185  }

◆ out_of_order_exec_mode_on_device_present()

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

Definition at line 161 of file flow_graph_opencl_node.h.

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

◆ out_of_order_exec_mode_on_host_present()

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

Definition at line 153 of file flow_graph_opencl_node.h.

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

◆ platform_extensions()

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

Definition at line 131 of file flow_graph_opencl_node.h.

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

◆ platform_id()

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

Definition at line 228 of file flow_graph_opencl_node.h.

228  {
229  return device_info<cl_platform_id>( my_cl_device_id, CL_DEVICE_PLATFORM );
230  }

◆ platform_name()

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

Definition at line 125 of file flow_graph_opencl_node.h.

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

◆ platform_profile()

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

Definition at line 119 of file flow_graph_opencl_node.h.

119  {
120  return platform_info<std::string>( platform_id(), CL_PLATFORM_PROFILE );
121  }

◆ platform_vendor()

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

Definition at line 128 of file flow_graph_opencl_node.h.

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

◆ platform_version()

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

Definition at line 122 of file flow_graph_opencl_node.h.

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

◆ set_command_queue()

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

Definition at line 224 of file flow_graph_opencl_node.h.

224  {
225  my_cl_command_queue = cmd_queue;
226  }

◆ type()

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

Definition at line 204 of file flow_graph_opencl_node.h.

204  {
205  return device_info<cl_device_type>( my_cl_device_id, CL_DEVICE_TYPE );
206  }

◆ vendor()

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

Definition at line 208 of file flow_graph_opencl_node.h.

208  {
209  return device_info<std::string>( my_cl_device_id, CL_DEVICE_VENDOR );
210  }

◆ version()

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

Definition at line 139 of file flow_graph_opencl_node.h.

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

Friends And Related Function Documentation

◆ opencl_factory

template<typename DeviceFilter >
friend class opencl_factory
friend

Definition at line 241 of file flow_graph_opencl_node.h.

◆ opencl_memory

template<typename Factory >
friend class opencl_memory
friend

Definition at line 243 of file flow_graph_opencl_node.h.

◆ opencl_program

template<typename Factory >
friend class opencl_program
friend

Definition at line 245 of file flow_graph_opencl_node.h.

◆ operator==

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

Definition at line 238 of file flow_graph_opencl_node.h.

238 { 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::interface10::opencl_device::my_cl_device_id
private

Definition at line 235 of file flow_graph_opencl_node.h.

◆ my_device_id

device_id_type tbb::flow::interface10::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.