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

typedef size_t tbb::flow::interface11::opencl_device::device_id_type

Definition at line 110 of file flow_graph_opencl_node.h.

## Member Enumeration Documentation

## anonymous enum

anonymous enum : device_id_type

Enumerator
unknown |
host |

Definition at line 111 of file flow_graph_opencl_node.h.

: device_id_type {
unknown = device_id_type( -2 ),
host = device_id_type( -1 )
};

## Constructor & Destructor Documentation

## opencl_device() [1/3]

tbb::flow::interface11::opencl_device::opencl_device | ( |  | ) |

inline

Definition at line 116 of file flow_graph_opencl_node.h.

: my_device_id( unknown ), my_cl_device_id( NULL ), my_cl_command_queue( NULL ) {}

## opencl_device() [2/3]

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

inline

Definition at line 118 of file flow_graph_opencl_node.h.

: my_device_id( unknown ), my_cl_device_id( d_id ), my_cl_command_queue( NULL ) {}

## opencl_device() [3/3]

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

inline

Definition at line 120 of file flow_graph_opencl_node.h.

: my_device_id( device_id ), my_cl_device_id( cl_d_id ), my_cl_command_queue( NULL ) {}

## 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.

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

References my_cl_device_id.

## available()

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

inline

Definition at line 189 of file flow_graph_opencl_node.h.

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

References my_cl_device_id.

## 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.

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

References built_in_kernels().

Here is the call graph for this function:

## 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.

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

References my_cl_device_id.

Referenced by built_in_kernel_available().

Here is the caller graph for this function:

## 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.

{
return my_cl_command_queue;
}

References my_cl_command_queue.

## compiler_available()

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

inline

Definition at line 192 of file flow_graph_opencl_node.h.

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

References my_cl_device_id.

## 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.

{
return my_cl_device_id;
}

References my_cl_device_id.

## 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.

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

References extensions().

Here is the call graph for this function:

## extensions()

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

inline

Definition at line 203 of file flow_graph_opencl_node.h.

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

References my_cl_device_id.

Referenced by extension_available().

Here is the caller graph for this function:

## 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.

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

References my_cl_device_id.

## linker_available()

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

inline

Definition at line 195 of file flow_graph_opencl_node.h.

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

References my_cl_device_id.

## major_version()

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

inline

Definition at line 146 of file flow_graph_opencl_node.h.

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

References version().

Referenced by out_of_order_exec_mode_on_device_present(), and out_of_order_exec_mode_on_host_present().

Here is the call graph for this function:
Here is the caller graph for this function:

## 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.

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

References my_cl_device_id.

## 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.

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

References my_cl_device_id.

## minor_version()

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

inline

Definition at line 151 of file flow_graph_opencl_node.h.

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

References version().

Here is the call graph for this function:

## name()

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

inline

Definition at line 186 of file flow_graph_opencl_node.h.

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

References my_cl_device_id.

## 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.

{
#if CL_VERSION_2_0
if ( major_version() >= 2 )
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;
else
#endif /* CL_VERSION_2_0 */
return false;
}

References major_version(), and my_cl_device_id.

Here is the call graph for this function:

## 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.

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

References major_version(), and my_cl_device_id.

Here is the call graph for this function:

## platform_extensions()

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

inline

Definition at line 134 of file flow_graph_opencl_node.h.

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

References platform_id().

Here is the call graph for this function:

## 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.

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

References my_cl_device_id.

Referenced by platform_extensions(), platform_name(), platform_profile(), platform_vendor(), and platform_version().

Here is the caller graph for this function:

## platform_name()

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

inline

Definition at line 128 of file flow_graph_opencl_node.h.

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

References platform_id().

Here is the call graph for this function:

## platform_profile()

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

inline

Definition at line 122 of file flow_graph_opencl_node.h.

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

References platform_id().

Here is the call graph for this function:

## platform_vendor()

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

inline

Definition at line 131 of file flow_graph_opencl_node.h.

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

References platform_id().

Here is the call graph for this function:

## platform_version()

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

inline

Definition at line 125 of file flow_graph_opencl_node.h.

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

References platform_id().

Here is the call graph for this function:

## 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.

{
my_cl_command_queue = cmd_queue;
}

References my_cl_command_queue.

## type()

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

inline

Definition at line 207 of file flow_graph_opencl_node.h.

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

References my_cl_device_id.

## vendor()

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

inline

Definition at line 211 of file flow_graph_opencl_node.h.

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

References my_cl_device_id.

## version()

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

inline

Definition at line 142 of file flow_graph_opencl_node.h.

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

References my_cl_device_id.

Referenced by major_version(), and minor_version().

Here is the caller graph for this function:

## 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.

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

## Member Data Documentation

## my_cl_command_queue

cl_command_queue tbb::flow::interface11::opencl_device::my_cl_command_queue

private

Definition at line 239 of file flow_graph_opencl_node.h.

Referenced by command_queue(), tbb::flow::interface11::opencl_factory< default_device_filter >::enqueue_map_buffer(), tbb::flow::interface11::opencl_factory< default_device_filter >::enqueue_unmap_buffer(), tbb::flow::interface11::opencl_factory< default_device_filter >::finalize(), tbb::flow::interface11::opencl_factory< default_device_filter >::send_kernel_impl(), and set_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.

Referenced by address_bits(), available(), built_in_kernels(), compiler_available(), device_id(), extensions(), info(), linker_available(), max_work_group_size(), max_work_item_sizes(), name(), out_of_order_exec_mode_on_device_present(), out_of_order_exec_mode_on_host_present(), platform_id(), type(), vendor(), and version().

## my_device_id

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

private

Definition at line 237 of file flow_graph_opencl_node.h.

Referenced by tbb::flow::interface11::opencl_memory< Factory >::send().

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

- flow_graph_opencl_node.h

tbb::flow::interface11::opencl_device::my_cl_command_queue
cl_command_queue my_cl_command_queue
Definition: flow_graph_opencl_node.h:239
tbb::flow::interface11::opencl_device::unknown
Definition: flow_graph_opencl_node.h:112
tbb::flow::interface11::opencl_device::device_id
cl_device_id device_id() const
Definition: flow_graph_opencl_node.h:219
tbb::flow::interface11::opencl_device::my_cl_device_id
cl_device_id my_cl_device_id
Definition: flow_graph_opencl_node.h:238
tbb::flow::interface11::opencl_device::version
std::string version() const
Definition: flow_graph_opencl_node.h:142
tbb::flow::interface11::opencl_device::built_in_kernels
std::string built_in_kernels() const
Definition: flow_graph_opencl_node.h:183
tbb::flow::interface11::opencl_device::extensions
std::string extensions() const
Definition: flow_graph_opencl_node.h:203
tbb::flow::interface11::opencl_device::major_version
int major_version() const
Definition: flow_graph_opencl_node.h:146
tbb::flow::interface11::opencl_device::host
Definition: flow_graph_opencl_node.h:113
tbb::flow::interface11::opencl_device::device_id_type
size_t device_id_type
Definition: flow_graph_opencl_node.h:110
tbb::flow::interface11::opencl_device::my_device_id
device_id_type my_device_id
Definition: flow_graph_opencl_node.h:237
tbb::flow::interface11::opencl_device::platform_id
cl_platform_id platform_id() const
Definition: flow_graph_opencl_node.h:231

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.