tbb::flow::interface11 Namespace Reference

## Namespaces

| internal
| opencl_info

## Classes

struct | null_type
| A generic null type. More...
class | continue_msg
| An empty class used for messages that mean "I'm done". More...
class | sender
| Forward declaration section. More...
class | receiver
| Pure virtual template class that defines a receiver of messages of type T. More...
class | limiter_node
| Forwards messages only if the threshold has not been reached. More...
class | run_and_put_task
class | continue_receiver
| Base class for receivers of completion messages. More...
class | input_node
| An executable node that acts as a source, i.e. it has no predecessors. More...
class | source_node
| An executable node that acts as a source, i.e. it has no predecessors. More...
class | function_node
| Implements a function node that supports Input -> Output. More...
class | multifunction_node
| implements a function node that supports Input -> (set of outputs) More...
class | split_node
| split_node: accepts a tuple as input, forwards each element of the tuple to its More...
class | continue_node
| Implements an executable node that supports continue_msg -> Output. More...
class | broadcast_node
| Forwards messages of type T to all successors. More...
class | buffer_node
| Forwards messages in arbitrary order. More...
class | queue_node
| Forwards messages in FIFO order. More...
class | sequencer_node
| Forwards messages in sequence order. More...
class | priority_queue_node
| Forwards messages in priority order. More...
class | join_node
class | join_node< OutputTuple, reserving >
class | join_node< OutputTuple, queueing >
class | join_node< OutputTuple, key_matching< K, KHash > >
class | indexer_node
class | indexer_node< T0 >
class | indexer_node< T0, T1 >
class | indexer_node< T0, T1, T2 >
class | indexer_node< T0, T1, T2, T3 >
class | indexer_node< T0, T1, T2, T3, T4 >
class | indexer_node< T0, T1, T2, T3, T4, T5 >
class | indexer_node< T0, T1, T2, T3, T4, T5, T6 >
class | indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 >
class | indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 >
class | composite_node
class | composite_node< tbb::flow::tuple< InputTypes... >, tbb::flow::tuple< OutputTypes... > >
class | composite_node< tbb::flow::tuple< InputTypes... >, tbb::flow::tuple<> >
class | composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes... > >
class | async_node
| Implements async node. More...
class | overwrite_node
class | write_once_node
class | graph_proxy
| Pure virtual template classes that define interfaces for async communication. More...
class | receiver_gateway
class | opencl_factory
class | opencl_program
class | opencl_device
class | opencl_device_list
class | callback_base
class | callback
class | opencl_async_msg
class | opencl_memory
class | opencl_buffer_impl
class | opencl_buffer
class | opencl_subbuffer
class | opencl_range
class | opencl_node< tuple< Ports... >, JP, Factory >
class | opencl_node< tuple< Ports... >, JP >
class | opencl_node< tuple< Ports... > >
struct | graph_task
| Base class for tasks generated by graph nodes. More...
class | graph_iterator
class | graph_node
| The base of all graph nodes. More...

## Enumerations

enum | access_type { read_write , write_only , read_only }
enum class | opencl_program_type { SOURCE , PRECOMPILED , SPIR }
enum | reset_flags { rf_reset_protocol = 0 , rf_reset_bodies = 1 << 0 , rf_clear_edges = 1 << 1 }

## Functions

static tbb::task * | combine_tasks (graph &g, tbb::task *left, tbb::task *right)
void | internal_make_edge (internal::untyped_sender &p, internal::untyped_receiver &s)
template<typename T >
void | make_edge (sender< T > &p, receiver< T > &s)
| Makes an edge between a single predecessor and a single successor. More...
template<typename TS , typename TR , typename = typename tbb::internal::enable_if<tbb::internal::is_same_type<TS, internal::untyped_sender>::value || tbb::internal::is_same_type<TR, internal::untyped_receiver>::value>::type>
void | make_edge (TS &p, TR &s)
template<typename T >
void | make_edge (sender< T > &p, receiver< typename T::async_msg_data_type > &s)
template<typename T >
void | make_edge (sender< typename T::async_msg_data_type > &p, receiver< T > &s)
template<typename T , typename V , typename = typename T::output_ports_type, typename = typename V::input_ports_type>
void | make_edge (T &output, V &input)
template<typename T , typename R , typename = typename T::output_ports_type>
void | make_edge (T &output, receiver< R > &input)
template<typename S , typename V , typename = typename V::input_ports_type>
void | make_edge (sender< S > &output, V &input)
void | internal_remove_edge (internal::untyped_sender &p, internal::untyped_receiver &s)
template<typename T >
void | remove_edge (sender< T > &p, receiver< T > &s)
| Removes an edge between a single predecessor and a single successor. More...
template<typename TS , typename TR , typename = typename tbb::internal::enable_if<tbb::internal::is_same_type<TS, internal::untyped_sender>::value || tbb::internal::is_same_type<TR, internal::untyped_receiver>::value>::type>
void | remove_edge (TS &p, TR &s)
template<typename T >
void | remove_edge (sender< T > &p, receiver< typename T::async_msg_data_type > &s)
template<typename T >
void | remove_edge (sender< typename T::async_msg_data_type > &p, receiver< T > &s)
template<typename T , typename V , typename = typename T::output_ports_type, typename = typename V::input_ports_type>
void | remove_edge (T &output, V &input)
template<typename T , typename R , typename = typename T::output_ports_type>
void | remove_edge (T &output, receiver< R > &input)
template<typename S , typename V , typename = typename V::input_ports_type>
void | remove_edge (sender< S > &output, V &input)
template<typename Body , typename Node >
Body | copy_body (Node &n)
| Returns a copy of the body from a function or continue node. More...
void | enforce_cl_retcode (cl_int err, std::string msg)
template<typename T >
T | event_info (cl_event e, cl_event_info i)
template<typename T >
T | device_info (cl_device_id d, cl_device_info i)
template<>
std::string | device_info< std::string > (cl_device_id d, cl_device_info i)
template<typename T >
T | platform_info (cl_platform_id p, cl_platform_info i)
template<>
std::string | platform_info< std::string > (cl_platform_id p, cl_platform_info i)
template<typename K , typename T , typename Factory >
K | key_from_message (const opencl_async_msg< T, Factory > &dmsg)
| is_typedef (native_object_type)
| is_typedef (memory_object_type)
template<typename T >
std::enable_if< is_native_object_type< T >::value, typename T::native_object_type >::type | get_native_object (const T &t)
template<typename T >
std::enable_if<!is_native_object_type< T >::value, T >::type | get_native_object (T t)
template<typename T , typename Factory >
std::enable_if< is_memory_object_type< T >::value >::type | send_if_memory_object (opencl_device device, opencl_async_msg< T, Factory > &dmsg)
template<typename T >
std::enable_if< is_memory_object_type< T >::value >::type | send_if_memory_object (opencl_device device, T &t)
template<typename T >
std::enable_if<!is_memory_object_type< T >::value >::type | send_if_memory_object (opencl_device, T &)
template<typename T , typename Factory >
std::enable_if< is_memory_object_type< T >::value >::type | receive_if_memory_object (const opencl_async_msg< T, Factory > &dmsg)
template<typename T >
std::enable_if<!is_memory_object_type< T >::value >::type | receive_if_memory_object (const T &)

## Variables

template<typename T >
class __TBB_DEPRECATED | async_msg
template<typename T , typename Factory = opencl_info::default_opencl_factory>
class __TBB_DEPRECATED_IN_VERBOSE_MODE | opencl_subbuffer
template<typename... Args>
class __TBB_DEPRECATED_IN_VERBOSE_MODE | opencl_node

## Enumeration Type Documentation

## access_type

enum tbb::flow::interface11::access_type

Enumerator
read_write |
write_only |
read_only |

Definition at line 633 of file flow_graph_opencl_node.h.

{
read_write,
write_only,
read_only
};
tbb::flow::interface11::read_write
@ read_write
Definition: flow_graph_opencl_node.h:634
tbb::flow::interface11::write_only
@ write_only
Definition: flow_graph_opencl_node.h:635
tbb::flow::interface11::read_only
@ read_only
Definition: flow_graph_opencl_node.h:636

## opencl_program_type

enum tbb::flow::interface11::opencl_program_type

strong

Enumerator
SOURCE |
PRECOMPILED |
SPIR |

Definition at line 1228 of file flow_graph_opencl_node.h.

{
SOURCE,
PRECOMPILED,
SPIR
};
tbb::flow::interface11::opencl_program_type::SPIR
@ SPIR
tbb::flow::interface11::opencl_program_type::PRECOMPILED
@ PRECOMPILED
tbb::flow::interface11::opencl_program_type::SOURCE
@ SOURCE

## reset_flags

enum tbb::flow::interface11::reset_flags

Enumerator
rf_reset_protocol |
rf_reset_bodies |
rf_clear_edges |

Definition at line 158 of file _flow_graph_impl.h.

{
rf_reset_protocol = 0,
rf_reset_bodies = 1 << 0, // delete the current node body, reset to a copy of the initial node body.
rf_clear_edges = 1 << 1 // delete edges
};
tbb::flow::interface11::rf_reset_protocol
@ rf_reset_protocol
Definition: _flow_graph_impl.h:159
tbb::flow::interface11::rf_clear_edges
@ rf_clear_edges
Definition: _flow_graph_impl.h:161
tbb::flow::interface11::rf_reset_bodies
@ rf_reset_bodies
Definition: _flow_graph_impl.h:160

## Function Documentation

## combine_tasks()

static tbb::task* tbb::flow::interface11::combine_tasks | ( | graph & | g,
|  | tbb::task * | left,
|  | tbb::task * | right
| ) |  |

inline static

Definition at line 199 of file flow_graph.h.

{
// if no RHS task, don't change left.
if (right == NULL) return left;
// right != NULL
if (left == NULL) return right;
if (left == SUCCESSFULLY_ENQUEUED) return right;
// left contains a task
if (right != SUCCESSFULLY_ENQUEUED) {
// both are valid tasks
internal::spawn_in_graph_arena(g, *left);
return right;
}
return left;
}
tbb::flow::interface11::internal::spawn_in_graph_arena
void spawn_in_graph_arena(tbb::flow::interface10::graph &g, tbb::task &arena_task)
Spawns a task inside graph arena.
Definition: _flow_graph_impl.h:521
tbb::flow::internal::SUCCESSFULLY_ENQUEUED
static tbb::task *const SUCCESSFULLY_ENQUEUED
Definition: _flow_graph_impl.h:61

Referenced by internal::function_input< Input, Output, Policy, A >::apply_body_impl_bypass(), tbb::flow::interface11::buffer_node< T, Allocator >::forward_task(), internal::function_input_base< Input, Policy, A, ImplType >::forward_task(), internal::join_node_base< JP, InputTuple, OutputTuple >::handle_operations(), tbb::flow::interface11::buffer_node< T, Allocator >::handle_operations_impl(), tbb::flow::interface11::buffer_node< T, Allocator >::try_put_and_add_task(), tbb::flow::interface11::queue_node< T, Allocator >::try_put_and_add_task(), tbb::flow::interface11::priority_queue_node< T, Compare, Allocator >::try_put_and_add_task(), and internal::broadcast_cache< T, M >::try_put_task().

Here is the caller graph for this function:

## copy_body()

template<typename Body , typename Node >

Body tbb::flow::interface11::copy_body | ( | Node & | n | ) |

Returns a copy of the body from a function or continue node.

Definition at line 3969 of file flow_graph.h.

{
return n.template copy_function_object<Body>();
}

## device_info()

template<typename T >

T tbb::flow::interface11::device_info | ( | cl_device_id | d,
|  | cl_device_info | i
| ) |  |

Definition at line 83 of file flow_graph_opencl_node.h.

{
T res;
enforce_cl_retcode(clGetDeviceInfo(d, i, sizeof(res), &res, NULL), "Failed to get OpenCL device information");
return res;
}
d
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d
Definition: ittnotify_static.h:109
tbb::flow::interface11::enforce_cl_retcode
void enforce_cl_retcode(cl_int err, std::string msg)
Definition: flow_graph_opencl_node.h:68

References d, and enforce_cl_retcode().

Here is the call graph for this function:

## device_info< std::string >()

template<>

std::string tbb::flow::interface11::device_info< std::string > | ( | cl_device_id | d,
|  | cl_device_info | i
| ) |  |

inline

Definition at line 90 of file flow_graph_opencl_node.h.

{
size_t required;
enforce_cl_retcode(clGetDeviceInfo(d, i, 0, NULL, &required), "Failed to get OpenCL device information");
char *buff = (char*)alloca(required);
enforce_cl_retcode(clGetDeviceInfo(d, i, required, buff, NULL), "Failed to get OpenCL device information");
return buff;
}

References d, and enforce_cl_retcode().

Here is the call graph for this function:

## enforce_cl_retcode()

void tbb::flow::interface11::enforce_cl_retcode | ( | cl_int | err,
|  | std::string | msg
| ) |  |

inline

Definition at line 68 of file flow_graph_opencl_node.h.

{
if (err != CL_SUCCESS) {
std::cerr << msg << "; error code: " << err << std::endl;
throw msg;
}
}

Referenced by tbb::flow::interface11::opencl_async_msg< T, Factory >::clear_event(), tbb::flow::interface11::opencl_async_msg< T, Factory >::data(), device_info(), device_info< std::string >(), tbb::flow::interface11::opencl_factory< DeviceFilter >::enqueue_map_buffer(), tbb::flow::interface11::opencl_factory< DeviceFilter >::enqueue_unmap_buffer(), event_info(), tbb::flow::interface11::opencl_factory< DeviceFilter >::finalize(), tbb::flow::interface11::internal::find_available_devices(), tbb::flow::interface11::opencl_program< Factory >::get_cl_kernel(), tbb::flow::interface11::opencl_program< Factory >::init(), tbb::flow::interface11::opencl_factory< DeviceFilter >::init_once(), tbb::flow::interface11::opencl_factory< DeviceFilter >::kernel::kernel(), tbb::flow::interface11::opencl_async_msg< T, Factory >::opencl_async_msg(), tbb::flow::interface11::opencl_buffer_impl< Factory >::opencl_buffer_impl(), tbb::flow::interface11::opencl_program< Factory >::opencl_device_filter::opencl_device_filter(), tbb::flow::interface11::opencl_program< Factory >::opencl_program_builder::opencl_program_builder(), tbb::flow::interface11::opencl_async_msg< T, Factory >::operator=(), platform_info(), platform_info< std::string >(), tbb::flow::interface11::opencl_factory< DeviceFilter >::process_one_arg(), tbb::flow::interface11::opencl_memory< Factory >::receive(), tbb::flow::interface11::opencl_async_msg< T, Factory >::register_callback(), tbb::flow::interface11::opencl_memory< Factory >::send(), tbb::flow::interface11::opencl_factory< DeviceFilter >::send_kernel(), tbb::flow::interface11::opencl_factory< DeviceFilter >::send_kernel_impl(), tbb::flow::interface11::opencl_async_msg< T, Factory >::set_event(), tbb::flow::interface11::opencl_factory< DeviceFilter >::kernel::~kernel(), tbb::flow::interface11::opencl_async_msg< T, Factory >::~opencl_async_msg(), tbb::flow::interface11::opencl_factory< DeviceFilter >::~opencl_factory(), and tbb::flow::interface11::opencl_memory< Factory >::~opencl_memory().

Here is the caller graph for this function:

## event_info()

template<typename T >

T tbb::flow::interface11::event_info | ( | cl_event | e,
|  | cl_event_info | i
| ) |  |

Definition at line 76 of file flow_graph_opencl_node.h.

{
T res;
enforce_cl_retcode(clGetEventInfo(e, i, sizeof(res), &res, NULL), "Failed to get OpenCL event information");
return res;
}

References enforce_cl_retcode().

Here is the call graph for this function:

## get_native_object() [1/2]

template<typename T >

std::enable_if<is_native_object_type<T>::value, typename T::native_object_type>::type tbb::flow::interface11::get_native_object | ( | const T & | t | ) |

Definition at line 749 of file flow_graph_opencl_node.h.

{
return t.native_object();
}

## get_native_object() [2/2]

template<typename T >

std::enable_if<!is_native_object_type<T>::value, T>::type tbb::flow::interface11::get_native_object | ( | T | t | ) |

Definition at line 754 of file flow_graph_opencl_node.h.

{
return t;
}

Referenced by tbb::flow::interface11::opencl_factory< DeviceFilter >::process_one_arg().

Here is the caller graph for this function:

## internal_make_edge()

void tbb::flow::interface11::internal_make_edge | ( | internal::untyped_sender & | p,
|  | internal::untyped_receiver & | s
| ) |  |

inline

Definition at line 3823 of file flow_graph.h.

{
#else
template< typename T >
inline void internal_make_edge( sender<T> &p, receiver<T> &s ) {
#endif
#if TBB_DEPRECATED_FLOW_NODE_EXTRACTION
s.internal_add_built_predecessor(p);
p.internal_add_built_successor(s);
#endif
p.register_successor( s );
tbb::internal::fgt_make_edge( &p, &s );
}
s
void const char const char int ITT_FORMAT __itt_group_sync s
Definition: ittnotify_static.h:91
p
void const char const char int ITT_FORMAT __itt_group_sync p
Definition: ittnotify_static.h:91
tbb::internal::fgt_make_edge
static void fgt_make_edge(void *, void *)
Definition: _flow_graph_trace_impl.h:333
tbb::flow::interface11::internal_make_edge
void internal_make_edge(internal::untyped_sender &p, internal::untyped_receiver &s)
Definition: flow_graph.h:3823

References tbb::internal::fgt_make_edge(), p, and s.

Referenced by make_edge().

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

## internal_remove_edge()

void tbb::flow::interface11::internal_remove_edge | ( | internal::untyped_sender & | p,
|  | internal::untyped_receiver & | s
| ) |  |

inline

Definition at line 3886 of file flow_graph.h.

{
#else
template< typename T >
inline void internal_remove_edge( sender<T> &p, receiver<T> &s ) {
#endif
p.remove_successor( s );
#if TBB_DEPRECATED_FLOW_NODE_EXTRACTION
// TODO: should we try to remove p from the predecessor list of s, in case the edge is reversed?
p.internal_delete_built_successor(s);
s.internal_delete_built_predecessor(p);
#endif
tbb::internal::fgt_remove_edge( &p, &s );
}
tbb::internal::fgt_remove_edge
static void fgt_remove_edge(void *, void *)
Definition: _flow_graph_trace_impl.h:334
tbb::flow::interface11::internal_remove_edge
void internal_remove_edge(internal::untyped_sender &p, internal::untyped_receiver &s)
Definition: flow_graph.h:3886

References tbb::internal::fgt_remove_edge(), p, and s.

Referenced by remove_edge().

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

## is_typedef() [1/2]

tbb::flow::interface11::is_typedef | ( | memory_object_type |  | ) |

## is_typedef() [2/2]

tbb::flow::interface11::is_typedef | ( | native_object_type |  | ) |

## key_from_message()

template<typename K , typename T , typename Factory >

K tbb::flow::interface11::key_from_message | ( | const opencl_async_msg< T, Factory > & | dmsg | ) |

Definition at line 506 of file flow_graph_opencl_node.h.

{
using tbb::flow::key_from_message;
const T &t = dmsg.data( false );
__TBB_STATIC_ASSERT( true, "" );
return key_from_message<K, T>( t );
}
__TBB_STATIC_ASSERT
#define __TBB_STATIC_ASSERT(condition, msg)
Definition: tbb_stddef.h:553
tbb::flow::key_from_message
K key_from_message(const T &t)
Definition: flow_graph.h:721

References __TBB_STATIC_ASSERT, tbb::flow::interface11::opencl_async_msg< T, Factory >::data(), and tbb::flow::key_from_message().

Here is the call graph for this function:

## make_edge() [1/7]

template<typename S , typename V , typename = typename V::input_ports_type>

void tbb::flow::interface11::make_edge | ( | sender< S > & | output,
|  | V & | input
| ) |  |

inline

Definition at line 3880 of file flow_graph.h.

{
make_edge(output, get<0>(input.input_ports()));
}
tbb::flow::interface11::make_edge
void make_edge(sender< S > &output, V &input)
Definition: flow_graph.h:3880

References make_edge().

Here is the call graph for this function:

## make_edge() [2/7]

template<typename T >

void tbb::flow::interface11::make_edge | ( | sender< T > & | p,
|  | receiver< T > & | s
| ) |  |

inline

Makes an edge between a single predecessor and a single successor.

Definition at line 3838 of file flow_graph.h.

{
internal_make_edge( p, s );
}

References internal_make_edge(), p, and s.

Referenced by make_edge(), streaming_node< tuple< Ports... >, JP, StreamFactory >::make_edges(), and streaming_node< tuple< Ports... >, JP, StreamFactory >::make_Nth_edge().

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

## make_edge() [3/7]

template<typename T >

void tbb::flow::interface11::make_edge | ( | sender< T > & | p,
|  | receiver< typename T::async_msg_data_type > & | s
| ) |  |

inline

Definition at line 3851 of file flow_graph.h.

{
internal_make_edge( p, s );
}

References internal_make_edge(), p, and s.

Here is the call graph for this function:

## make_edge() [4/7]

template<typename T >

void tbb::flow::interface11::make_edge | ( | sender< typename T::async_msg_data_type > & | p,
|  | receiver< T > & | s
| ) |  |

inline

Definition at line 3856 of file flow_graph.h.

{
internal_make_edge( p, s );
}

References internal_make_edge(), p, and s.

Here is the call graph for this function:

## make_edge() [5/7]

template<typename T , typename R , typename = typename T::output_ports_type>

void tbb::flow::interface11::make_edge | ( | T & | output,
|  | receiver< R > & | input
| ) |  |

inline

Definition at line 3873 of file flow_graph.h.

{
make_edge(get<0>(output.output_ports()), input);
}

References make_edge().

Here is the call graph for this function:

## make_edge() [6/7]

template<typename T , typename V , typename = typename T::output_ports_type, typename = typename V::input_ports_type>

void tbb::flow::interface11::make_edge | ( | T & | output,
|  | V & | input
| ) |  |

inline

Definition at line 3866 of file flow_graph.h.

{
make_edge(get<0>(output.output_ports()), get<0>(input.input_ports()));
}

References make_edge().

Here is the call graph for this function:

## make_edge() [7/7]

template<typename TS , typename TR , typename = typename tbb::internal::enable_if<tbb::internal::is_same_type<TS, internal::untyped_sender>::value || tbb::internal::is_same_type<TR, internal::untyped_receiver>::value>::type>

void tbb::flow::interface11::make_edge | ( | TS & | p,
|  | TR & | s
| ) |  |

inline

Definition at line 3846 of file flow_graph.h.

{
internal_make_edge( p, s );
}

References internal_make_edge(), p, and s.

Here is the call graph for this function:

## platform_info()

template<typename T >

T tbb::flow::interface11::platform_info | ( | cl_platform_id | p,
|  | cl_platform_info | i
| ) |  |

Definition at line 101 of file flow_graph_opencl_node.h.

{
T res;
enforce_cl_retcode(clGetPlatformInfo(p, i, sizeof(res), &res, NULL), "Failed to get OpenCL platform information");
return res;
}

References enforce_cl_retcode(), and p.

Here is the call graph for this function:

## platform_info< std::string >()

template<>

std::string tbb::flow::interface11::platform_info< std::string > | ( | cl_platform_id | p,
|  | cl_platform_info | i
| ) |  |

inline

Definition at line 108 of file flow_graph_opencl_node.h.

{
size_t required;
enforce_cl_retcode(clGetPlatformInfo(p, i, 0, NULL, &required), "Failed to get OpenCL platform information");
char *buff = (char*)alloca(required);
enforce_cl_retcode(clGetPlatformInfo(p, i, required, buff, NULL), "Failed to get OpenCL platform information");
return buff;
}

References enforce_cl_retcode(), and p.

Here is the call graph for this function:

## receive_if_memory_object() [1/2]

template<typename T , typename Factory >

std::enable_if<is_memory_object_type<T>::value>::type tbb::flow::interface11::receive_if_memory_object | ( | const opencl_async_msg< T, Factory > & | dmsg | ) |

Definition at line 783 of file flow_graph_opencl_node.h.

{
const T &t = dmsg.data( false );
typedef typename T::memory_object_type mem_obj_t;
mem_obj_t mem_obj = t.memory_object();
opencl_async_msg<mem_obj_t, Factory> d( mem_obj );
if ( dmsg.get_event() ) d.set_event( *dmsg.get_event() );
mem_obj.receive( d );
if ( d.get_event() ) dmsg.set_event( *d.get_event() );
}

References d, tbb::flow::interface11::opencl_async_msg< T, Factory >::data(), tbb::flow::interface11::opencl_async_msg< T, Factory >::get_event(), and tbb::flow::interface11::opencl_async_msg< T, Factory >::set_event().

Referenced by tbb::flow::interface11::opencl_async_msg< T, Factory >::finalize().

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

## receive_if_memory_object() [2/2]

template<typename T >

std::enable_if<!is_memory_object_type<T>::value>::type tbb::flow::interface11::receive_if_memory_object | ( | const T & |  | ) |

Definition at line 794 of file flow_graph_opencl_node.h.

{}

## remove_edge() [1/7]

template<typename S , typename V , typename = typename V::input_ports_type>

void tbb::flow::interface11::remove_edge | ( | sender< S > & | output,
|  | V & | input
| ) |  |

inline

Definition at line 3942 of file flow_graph.h.

{
remove_edge(output, get<0>(input.input_ports()));
}
tbb::flow::interface11::remove_edge
void remove_edge(sender< S > &output, V &input)
Definition: flow_graph.h:3942

References remove_edge().

Here is the call graph for this function:

## remove_edge() [2/7]

template<typename T >

void tbb::flow::interface11::remove_edge | ( | sender< T > & | p,
|  | receiver< T > & | s
| ) |  |

inline

Removes an edge between a single predecessor and a single successor.

Definition at line 3902 of file flow_graph.h.

{
internal_remove_edge( p, s );
}

References internal_remove_edge(), p, and s.

Referenced by remove_edge().

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

## remove_edge() [3/7]

template<typename T >

void tbb::flow::interface11::remove_edge | ( | sender< T > & | p,
|  | receiver< typename T::async_msg_data_type > & | s
| ) |  |

inline

Definition at line 3915 of file flow_graph.h.

{
internal_remove_edge( p, s );
}

References internal_remove_edge(), p, and s.

Here is the call graph for this function:

## remove_edge() [4/7]

template<typename T >

void tbb::flow::interface11::remove_edge | ( | sender< typename T::async_msg_data_type > & | p,
|  | receiver< T > & | s
| ) |  |

inline

Definition at line 3920 of file flow_graph.h.

{
internal_remove_edge( p, s );
}

References internal_remove_edge(), p, and s.

Here is the call graph for this function:

## remove_edge() [5/7]

template<typename T , typename R , typename = typename T::output_ports_type>

void tbb::flow::interface11::remove_edge | ( | T & | output,
|  | receiver< R > & | input
| ) |  |

inline

Definition at line 3936 of file flow_graph.h.

{
remove_edge(get<0>(output.output_ports()), input);
}

References remove_edge().

Here is the call graph for this function:

## remove_edge() [6/7]

template<typename T , typename V , typename = typename T::output_ports_type, typename = typename V::input_ports_type>

void tbb::flow::interface11::remove_edge | ( | T & | output,
|  | V & | input
| ) |  |

inline

Definition at line 3929 of file flow_graph.h.

{
remove_edge(get<0>(output.output_ports()), get<0>(input.input_ports()));
}

References remove_edge().

Here is the call graph for this function:

## remove_edge() [7/7]

template<typename TS , typename TR , typename = typename tbb::internal::enable_if<tbb::internal::is_same_type<TS, internal::untyped_sender>::value || tbb::internal::is_same_type<TR, internal::untyped_receiver>::value>::type>

void tbb::flow::interface11::remove_edge | ( | TS & | p,
|  | TR & | s
| ) |  |

inline

Definition at line 3910 of file flow_graph.h.

{
internal_remove_edge( p, s );
}

References internal_remove_edge(), p, and s.

Here is the call graph for this function:

## send_if_memory_object() [1/3]

template<typename T , typename Factory >

std::enable_if<is_memory_object_type<T>::value>::type tbb::flow::interface11::send_if_memory_object | ( | opencl_device | device,
|  | opencl_async_msg< T, Factory > & | dmsg
| ) |  |

Definition at line 760 of file flow_graph_opencl_node.h.

{
const T &t = dmsg.data( false );
typedef typename T::memory_object_type mem_obj_t;
mem_obj_t mem_obj = t.memory_object();
opencl_async_msg<mem_obj_t, Factory> d( mem_obj );
if ( dmsg.get_event() ) d.set_event( *dmsg.get_event() );
mem_obj.send( device, d );
if ( d.get_event() ) dmsg.set_event( *d.get_event() );
}

References d, tbb::flow::interface11::opencl_async_msg< T, Factory >::data(), tbb::flow::interface11::opencl_async_msg< T, Factory >::get_event(), and tbb::flow::interface11::opencl_async_msg< T, Factory >::set_event().

Here is the call graph for this function:

## send_if_memory_object() [2/3]

template<typename T >

std::enable_if<is_memory_object_type<T>::value>::type tbb::flow::interface11::send_if_memory_object | ( | opencl_device | device,
|  | T & | t
| ) |  |

Definition at line 771 of file flow_graph_opencl_node.h.

{
typedef typename T::memory_object_type mem_obj_t;
mem_obj_t mem_obj = t.memory_object();
opencl_async_msg<mem_obj_t, typename mem_obj_t::opencl_factory_type> dmsg( mem_obj );
mem_obj.send( device, dmsg );
}

## send_if_memory_object() [3/3]

template<typename T >

std::enable_if<!is_memory_object_type<T>::value>::type tbb::flow::interface11::send_if_memory_object | ( | opencl_device | ,
|  | T & |
| ) |  |

Definition at line 779 of file flow_graph_opencl_node.h.

{};

Referenced by tbb::flow::interface11::opencl_factory< DeviceFilter >::send_data().

Here is the caller graph for this function:

## Variable Documentation

## async_msg

template<typename T >

class __TBB_DEPRECATED tbb::flow::interface11::async_msg

Definition at line 199 of file flow_graph.h.

## opencl_node

template<typename... Args>

class __TBB_DEPRECATED_IN_VERBOSE_MODE tbb::flow::interface11::opencl_node

Definition at line 1225 of file flow_graph_opencl_node.h.

## opencl_subbuffer

template<typename T , typename Factory = opencl_info::default_opencl_factory>

class __TBB_DEPRECATED_IN_VERBOSE_MODE tbb::flow::interface11::opencl_subbuffer

Definition at line 506 of file flow_graph_opencl_node.h.

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.