tbb::flow::interface11 Namespace Reference

## Namespaces

| internal
| opencl_info

## Classes

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

## Enumerations

enum | access_type { read_write, write_only, read_only }
enum | opencl_program_type { opencl_program_type::SOURCE, opencl_program_type::PRECOMPILED, opencl_program_type::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 &)

## Enumeration Type Documentation

## access_type

enum tbb::flow::interface11::access_type

Enumerator
read_write |
write_only |
read_only |

Definition at line 622 of file flow_graph_opencl_node.h.

{
read_write,
write_only,
read_only
};

## opencl_program_type

enum tbb::flow::interface11::opencl_program_type

strong

Enumerator
SOURCE |
PRECOMPILED |
SPIR |

Definition at line 1214 of file flow_graph_opencl_node.h.

{
SOURCE,
PRECOMPILED,
SPIR
};

## 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
};

## 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 191 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;
}

References tbb::flow::interface11::internal::spawn_in_graph_arena(), and tbb::flow::internal::SUCCESSFULLY_ENQUEUED.

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

Here is the call graph for this function:
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 3584 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 72 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;
}

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 79 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 57 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< default_device_filter >::enqueue_map_buffer(), tbb::flow::interface11::opencl_factory< default_device_filter >::enqueue_unmap_buffer(), event_info(), tbb::flow::interface11::opencl_factory< default_device_filter >::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< default_device_filter >::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< default_device_filter >::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< default_device_filter >::send_kernel(), tbb::flow::interface11::opencl_factory< default_device_filter >::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< default_device_filter >::~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 65 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 735 of file flow_graph_opencl_node.h.

{
return t.native_object();
}

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

Here is the caller graph for this function:

## 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 740 of file flow_graph_opencl_node.h.

{
return t;
}

## internal_make_edge()

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

inline

Definition at line 3438 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 );
}

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 3501 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 );
}

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 495 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 );
}

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 3495 of file flow_graph.h.

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

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 3453 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 3466 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 3471 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 3488 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 3481 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 3461 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 90 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 97 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 769 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 780 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 3557 of file flow_graph.h.

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

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 3517 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 3530 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 3535 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 3551 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 3544 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 3525 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 746 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().

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

Here is the call graph for this function:
Here is the caller 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 757 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 765 of file flow_graph_opencl_node.h.

{};
tbb::flow::interface11::read_write
Definition: flow_graph_opencl_node.h:623
tbb::internal::fgt_remove_edge
static void fgt_remove_edge(void *, void *)
Definition: _flow_graph_trace_impl.h:334
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::internal::fgt_make_edge
static void fgt_make_edge(void *, void *)
Definition: _flow_graph_trace_impl.h:333
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::internal::SUCCESSFULLY_ENQUEUED
static tbb::task *const SUCCESSFULLY_ENQUEUED
Definition: _flow_graph_impl.h:61
tbb::flow::interface11::internal_make_edge
void internal_make_edge(internal::untyped_sender &p, internal::untyped_receiver &s)
Definition: flow_graph.h:3438
tbb::flow::interface11::make_edge
void make_edge(sender< S > &output, V &input)
Definition: flow_graph.h:3495
tbb::flow::key_from_message
K key_from_message(const T &t)
Definition: flow_graph.h:713
__TBB_STATIC_ASSERT
#define __TBB_STATIC_ASSERT(condition, msg)
Definition: tbb_stddef.h:553
tbb::flow::interface11::enforce_cl_retcode
void enforce_cl_retcode(cl_int err, std::string msg)
Definition: flow_graph_opencl_node.h:57
tbb::flow::interface11::read_only
Definition: flow_graph_opencl_node.h:625
tbb::flow::interface11::opencl_program_type::SOURCE
tbb::flow::interface11::rf_reset_protocol
Definition: _flow_graph_impl.h:159
tbb::flow::interface11::internal_remove_edge
void internal_remove_edge(internal::untyped_sender &p, internal::untyped_receiver &s)
Definition: flow_graph.h:3501
s
void const char const char int ITT_FORMAT __itt_group_sync s
Definition: ittnotify_static.h:91
tbb::flow::interface11::rf_clear_edges
Definition: _flow_graph_impl.h:161
tbb::flow::interface11::write_only
Definition: flow_graph_opencl_node.h:624
tbb::flow::interface11::opencl_program_type::SPIR
p
void const char const char int ITT_FORMAT __itt_group_sync p
Definition: ittnotify_static.h:91
tbb::flow::interface11::rf_reset_bodies
Definition: _flow_graph_impl.h:160
tbb::flow::interface11::remove_edge
void remove_edge(sender< S > &output, V &input)
Definition: flow_graph.h:3557
tbb::flow::interface11::opencl_program_type::PRECOMPILED

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.