Intel(R) Threading Building Blocks Doxygen Documentation  version 4.2.3
tbb::flow::interface10 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
 The graph class. 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  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  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  streaming_node
 
class  streaming_node< tuple< Ports... >, JP, StreamFactory >
 

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::taskcombine_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...
 
template<int N1, int N2 = N1>
internal::port_ref_impl< N1, N2 > port_ref ()
 
void enforce_cl_retcode (cl_int err, std::string msg)
 
template<typename T >
event_info (cl_event e, cl_event_info i)
 
template<typename 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 >
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 >
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

◆ opencl_program_type

◆ reset_flags

Enumerator
rf_reset_protocol 
rf_reset_bodies 
rf_clear_edges 

Definition at line 156 of file _flow_graph_impl.h.

156  {
157  rf_reset_protocol = 0,
158  rf_reset_bodies = 1 << 0, // delete the current node body, reset to a copy of the initial node body.
159  rf_clear_edges = 1 << 1 // delete edges
160 };

Function Documentation

◆ combine_tasks()

static tbb::task* tbb::flow::interface10::combine_tasks ( graph g,
tbb::task left,
tbb::task right 
)
inlinestatic

Definition at line 171 of file flow_graph.h.

Referenced by internal::function_input< Input, Output, Policy, A >::apply_body_impl_bypass(), internal::function_input_base< Input, Policy, A, multifunction_input< Input, OutputPortSet, Policy, A > >::forward_task(), internal::join_node_base< JP, InputTuple, OutputTuple >::handle_operations(), tbb::flow::interface10::queue_node< T, A >::try_put_and_add_task(), tbb::flow::interface10::priority_queue_node< T, Compare, A >::try_put_and_add_task(), and internal::broadcast_cache< output_type >::try_put_task().

171  {
172  // if no RHS task, don't change left.
173  if (right == NULL) return left;
174  // right != NULL
175  if (left == NULL) return right;
176  if (left == SUCCESSFULLY_ENQUEUED) return right;
177  // left contains a task
178  if (right != SUCCESSFULLY_ENQUEUED) {
179  // both are valid tasks
181  return right;
182  }
183  return left;
184 }
void spawn_in_graph_arena(graph &g, tbb::task &arena_task)
Spawns a task inside graph arena.
static tbb::task *const SUCCESSFULLY_ENQUEUED
Here is the caller graph for this function:

◆ copy_body()

template<typename Body , typename Node >
Body tbb::flow::interface10::copy_body ( Node &  n)

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

Definition at line 3274 of file flow_graph.h.

Referenced by tbb::flow::interface10a::write_once_node< T >::try_put_task().

3274  {
3275  return n.template copy_function_object<Body>();
3276 }
Here is the caller graph for this function:

◆ device_info()

template<typename T >
T tbb::flow::interface10::device_info ( cl_device_id  d,
cl_device_info  i 
)

Definition at line 69 of file flow_graph_opencl_node.h.

References enforce_cl_retcode().

69  {
70  T res;
71  enforce_cl_retcode(clGetDeviceInfo(d, i, sizeof(res), &res, NULL), "Failed to get OpenCL device information");
72  return res;
73 }
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
void enforce_cl_retcode(cl_int err, std::string msg)
Here is the call graph for this function:

◆ device_info< std::string >()

template<>
std::string tbb::flow::interface10::device_info< std::string > ( cl_device_id  d,
cl_device_info  i 
)
inline

Definition at line 76 of file flow_graph_opencl_node.h.

References enforce_cl_retcode().

76  {
77  size_t required;
78  enforce_cl_retcode(clGetDeviceInfo(d, i, 0, NULL, &required), "Failed to get OpenCL device information");
79 
80  char *buff = (char*)alloca(required);
81  enforce_cl_retcode(clGetDeviceInfo(d, i, required, buff, NULL), "Failed to get OpenCL device information");
82 
83  return buff;
84 }
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
void enforce_cl_retcode(cl_int err, std::string msg)
Here is the call graph for this function:

◆ enforce_cl_retcode()

void tbb::flow::interface10::enforce_cl_retcode ( cl_int  err,
std::string  msg 
)
inline

Definition at line 54 of file flow_graph_opencl_node.h.

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

54  {
55  if (err != CL_SUCCESS) {
56  std::cerr << msg << "; error code: " << err << std::endl;
57  throw msg;
58  }
59 }
Here is the caller graph for this function:

◆ event_info()

template<typename T >
T tbb::flow::interface10::event_info ( cl_event  e,
cl_event_info  i 
)

Definition at line 62 of file flow_graph_opencl_node.h.

References enforce_cl_retcode().

62  {
63  T res;
64  enforce_cl_retcode(clGetEventInfo(e, i, sizeof(res), &res, NULL), "Failed to get OpenCL event information");
65  return res;
66 }
void enforce_cl_retcode(cl_int err, std::string msg)
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::interface10::get_native_object ( const T &  t)

Definition at line 732 of file flow_graph_opencl_node.h.

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

732  {
733  return t.native_object();
734 }
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::interface10::get_native_object ( t)

Definition at line 737 of file flow_graph_opencl_node.h.

737  {
738  return t;
739 }

◆ internal_make_edge()

void tbb::flow::interface10::internal_make_edge ( internal::untyped_sender p,
internal::untyped_receiver s 
)
inline

Definition at line 3128 of file flow_graph.h.

References tbb::internal::fgt_make_edge(), and tbb::flow::interface10::internal::untyped_sender::register_successor().

Referenced by make_edge().

3128  {
3129 #else
3130 template< typename T >
3131 inline void internal_make_edge( sender<T> &p, receiver<T> &s ) {
3132 #endif
3133 #if TBB_DEPRECATED_FLOW_NODE_EXTRACTION
3134  s.internal_add_built_predecessor(p);
3135  p.internal_add_built_successor(s);
3136 #endif
3137  p.register_successor( s );
3138  tbb::internal::fgt_make_edge( &p, &s );
3139 }
void internal_make_edge(internal::untyped_sender &p, internal::untyped_receiver &s)
Definition: flow_graph.h:3128
static void fgt_make_edge(void *, void *)
void const char const char int ITT_FORMAT __itt_group_sync s
void const char const char int ITT_FORMAT __itt_group_sync p
Here is the call graph for this function:
Here is the caller graph for this function:

◆ internal_remove_edge()

void tbb::flow::interface10::internal_remove_edge ( internal::untyped_sender p,
internal::untyped_receiver s 
)
inline

Definition at line 3191 of file flow_graph.h.

References tbb::internal::fgt_remove_edge(), and tbb::flow::interface10::internal::untyped_sender::remove_successor().

Referenced by remove_edge().

3191  {
3192 #else
3193 template< typename T >
3194 inline void internal_remove_edge( sender<T> &p, receiver<T> &s ) {
3195 #endif
3196  p.remove_successor( s );
3197 #if TBB_DEPRECATED_FLOW_NODE_EXTRACTION
3198  // TODO: should we try to remove p from the predecessor list of s, in case the edge is reversed?
3199  p.internal_delete_built_successor(s);
3200  s.internal_delete_built_predecessor(p);
3201 #endif
3203 }
void const char const char int ITT_FORMAT __itt_group_sync s
void internal_remove_edge(internal::untyped_sender &p, internal::untyped_receiver &s)
Definition: flow_graph.h:3191
void const char const char int ITT_FORMAT __itt_group_sync p
static void fgt_remove_edge(void *, void *)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ is_typedef() [1/2]

tbb::flow::interface10::is_typedef ( native_object_type  )

◆ is_typedef() [2/2]

tbb::flow::interface10::is_typedef ( memory_object_type  )

◆ key_from_message()

template<typename K , typename T , typename Factory >
K tbb::flow::interface10::key_from_message ( const opencl_async_msg< T, Factory > &  dmsg)

Definition at line 492 of file flow_graph_opencl_node.h.

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

492  {
494  const T &t = dmsg.data( false );
495  __TBB_STATIC_ASSERT( true, "" );
496  return key_from_message<K, T>( t );
497 }
K key_from_message(const T &t)
Definition: flow_graph.h:693
#define __TBB_STATIC_ASSERT(condition, msg)
Definition: tbb_stddef.h:532
Here is the call graph for this function:

◆ make_edge() [1/7]

template<typename T >
void tbb::flow::interface10::make_edge ( sender< T > &  p,
receiver< T > &  s 
)
inline

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

Definition at line 3143 of file flow_graph.h.

References internal_make_edge(), and type.

Referenced by make_edge(), streaming_node< tuple< Ports... >, JP, StreamFactory >::make_edges(), streaming_node< tuple< Ports... >, JP, StreamFactory >::make_Nth_edge(), and tbb::flow::interface10a::write_once_node< T >::try_put_task().

3143  {
3144  internal_make_edge( p, s );
3145 }
void internal_make_edge(internal::untyped_sender &p, internal::untyped_receiver &s)
Definition: flow_graph.h:3128
void const char const char int ITT_FORMAT __itt_group_sync s
void const char const char int ITT_FORMAT __itt_group_sync p
Here is the call graph for this function:
Here is the caller graph for this function:

◆ make_edge() [2/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::interface10::make_edge ( TS &  p,
TR &  s 
)
inline

Definition at line 3151 of file flow_graph.h.

References internal_make_edge().

3151  {
3152  internal_make_edge( p, s );
3153 }
void internal_make_edge(internal::untyped_sender &p, internal::untyped_receiver &s)
Definition: flow_graph.h:3128
void const char const char int ITT_FORMAT __itt_group_sync s
void const char const char int ITT_FORMAT __itt_group_sync p
Here is the call graph for this function:

◆ make_edge() [3/7]

template<typename T >
void tbb::flow::interface10::make_edge ( sender< T > &  p,
receiver< typename T::async_msg_data_type > &  s 
)
inline

Definition at line 3156 of file flow_graph.h.

References internal_make_edge().

3156  {
3157  internal_make_edge( p, s );
3158 }
void internal_make_edge(internal::untyped_sender &p, internal::untyped_receiver &s)
Definition: flow_graph.h:3128
void const char const char int ITT_FORMAT __itt_group_sync s
void const char const char int ITT_FORMAT __itt_group_sync p
Here is the call graph for this function:

◆ make_edge() [4/7]

template<typename T >
void tbb::flow::interface10::make_edge ( sender< typename T::async_msg_data_type > &  p,
receiver< T > &  s 
)
inline

Definition at line 3161 of file flow_graph.h.

References internal_make_edge().

3161  {
3162  internal_make_edge( p, s );
3163 }
void internal_make_edge(internal::untyped_sender &p, internal::untyped_receiver &s)
Definition: flow_graph.h:3128
void const char const char int ITT_FORMAT __itt_group_sync s
void const char const char int ITT_FORMAT __itt_group_sync p
Here is the call graph for this function:

◆ make_edge() [5/7]

template<typename T , typename V , typename = typename T::output_ports_type, typename = typename V::input_ports_type>
void tbb::flow::interface10::make_edge ( T &  output,
V &  input 
)
inline

Definition at line 3171 of file flow_graph.h.

References make_edge().

3171  {
3172  make_edge(get<0>(output.output_ports()), get<0>(input.input_ports()));
3173 }
void make_edge(sender< S > &output, V &input)
Definition: flow_graph.h:3185
Here is the call graph for this function:

◆ make_edge() [6/7]

template<typename T , typename R , typename = typename T::output_ports_type>
void tbb::flow::interface10::make_edge ( T &  output,
receiver< R > &  input 
)
inline

Definition at line 3178 of file flow_graph.h.

References make_edge(), and S.

3178  {
3179  make_edge(get<0>(output.output_ports()), input);
3180 }
void make_edge(sender< S > &output, V &input)
Definition: flow_graph.h:3185
Here is the call graph for this function:

◆ make_edge() [7/7]

template<typename S , typename V , typename = typename V::input_ports_type>
void tbb::flow::interface10::make_edge ( sender< S > &  output,
V &  input 
)
inline

Definition at line 3185 of file flow_graph.h.

References make_edge().

3185  {
3186  make_edge(output, get<0>(input.input_ports()));
3187 }
void make_edge(sender< S > &output, V &input)
Definition: flow_graph.h:3185
Here is the call graph for this function:

◆ platform_info()

template<typename T >
T tbb::flow::interface10::platform_info ( cl_platform_id  p,
cl_platform_info  i 
)

Definition at line 87 of file flow_graph_opencl_node.h.

References enforce_cl_retcode().

87  {
88  T res;
89  enforce_cl_retcode(clGetPlatformInfo(p, i, sizeof(res), &res, NULL), "Failed to get OpenCL platform information");
90  return res;
91 }
void enforce_cl_retcode(cl_int err, std::string msg)
void const char const char int ITT_FORMAT __itt_group_sync p
Here is the call graph for this function:

◆ platform_info< std::string >()

template<>
std::string tbb::flow::interface10::platform_info< std::string > ( cl_platform_id  p,
cl_platform_info  i 
)
inline

Definition at line 94 of file flow_graph_opencl_node.h.

References enforce_cl_retcode().

94  {
95  size_t required;
96  enforce_cl_retcode(clGetPlatformInfo(p, i, 0, NULL, &required), "Failed to get OpenCL platform information");
97 
98  char *buff = (char*)alloca(required);
99  enforce_cl_retcode(clGetPlatformInfo(p, i, required, buff, NULL), "Failed to get OpenCL platform information");
100 
101  return buff;
102 }
void enforce_cl_retcode(cl_int err, std::string msg)
void const char const char int ITT_FORMAT __itt_group_sync p
Here is the call graph for this function:

◆ port_ref()

template<int N1, int N2 = N1>
internal::port_ref_impl<N1,N2> tbb::flow::interface10::port_ref ( )

Definition at line 42 of file flow_graph.h.

Referenced by tbb::flow::interface10a::write_once_node< T >::try_put_task().

Here is the caller 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::interface10::receive_if_memory_object ( const opencl_async_msg< T, Factory > &  dmsg)

Definition at line 766 of file flow_graph_opencl_node.h.

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

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

766  {
767  const T &t = dmsg.data( false );
768  typedef typename T::memory_object_type mem_obj_t;
769  mem_obj_t mem_obj = t.memory_object();
770  opencl_async_msg<mem_obj_t, Factory> d( mem_obj );
771  if ( dmsg.get_event() ) d.set_event( *dmsg.get_event() );
772  mem_obj.receive( d );
773  if ( d.get_event() ) dmsg.set_event( *d.get_event() );
774 }
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
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::interface10::receive_if_memory_object ( const T &  )

Definition at line 777 of file flow_graph_opencl_node.h.

777 {}

◆ remove_edge() [1/7]

template<typename T >
void tbb::flow::interface10::remove_edge ( sender< T > &  p,
receiver< T > &  s 
)
inline

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

Definition at line 3207 of file flow_graph.h.

References internal_remove_edge(), and type.

Referenced by remove_edge(), and tbb::flow::interface10a::write_once_node< T >::try_put_task().

3207  {
3208  internal_remove_edge( p, s );
3209 }
void const char const char int ITT_FORMAT __itt_group_sync s
void internal_remove_edge(internal::untyped_sender &p, internal::untyped_receiver &s)
Definition: flow_graph.h:3191
void const char const char int ITT_FORMAT __itt_group_sync p
Here is the call graph for this function:
Here is the caller graph for this function:

◆ remove_edge() [2/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::interface10::remove_edge ( TS &  p,
TR &  s 
)
inline

Definition at line 3215 of file flow_graph.h.

References internal_remove_edge().

3215  {
3216  internal_remove_edge( p, s );
3217 }
void const char const char int ITT_FORMAT __itt_group_sync s
void internal_remove_edge(internal::untyped_sender &p, internal::untyped_receiver &s)
Definition: flow_graph.h:3191
void const char const char int ITT_FORMAT __itt_group_sync p
Here is the call graph for this function:

◆ remove_edge() [3/7]

template<typename T >
void tbb::flow::interface10::remove_edge ( sender< T > &  p,
receiver< typename T::async_msg_data_type > &  s 
)
inline

Definition at line 3220 of file flow_graph.h.

References internal_remove_edge().

3220  {
3221  internal_remove_edge( p, s );
3222 }
void const char const char int ITT_FORMAT __itt_group_sync s
void internal_remove_edge(internal::untyped_sender &p, internal::untyped_receiver &s)
Definition: flow_graph.h:3191
void const char const char int ITT_FORMAT __itt_group_sync p
Here is the call graph for this function:

◆ remove_edge() [4/7]

template<typename T >
void tbb::flow::interface10::remove_edge ( sender< typename T::async_msg_data_type > &  p,
receiver< T > &  s 
)
inline

Definition at line 3225 of file flow_graph.h.

References internal_remove_edge().

3225  {
3226  internal_remove_edge( p, s );
3227 }
void const char const char int ITT_FORMAT __itt_group_sync s
void internal_remove_edge(internal::untyped_sender &p, internal::untyped_receiver &s)
Definition: flow_graph.h:3191
void const char const char int ITT_FORMAT __itt_group_sync p
Here is the call graph for this function:

◆ remove_edge() [5/7]

template<typename T , typename V , typename = typename T::output_ports_type, typename = typename V::input_ports_type>
void tbb::flow::interface10::remove_edge ( T &  output,
V &  input 
)
inline

Definition at line 3234 of file flow_graph.h.

References remove_edge().

3234  {
3235  remove_edge(get<0>(output.output_ports()), get<0>(input.input_ports()));
3236 }
void remove_edge(sender< S > &output, V &input)
Definition: flow_graph.h:3247
Here is the call graph for this function:

◆ remove_edge() [6/7]

template<typename T , typename R , typename = typename T::output_ports_type>
void tbb::flow::interface10::remove_edge ( T &  output,
receiver< R > &  input 
)
inline

Definition at line 3241 of file flow_graph.h.

References remove_edge(), and S.

3241  {
3242  remove_edge(get<0>(output.output_ports()), input);
3243 }
void remove_edge(sender< S > &output, V &input)
Definition: flow_graph.h:3247
Here is the call graph for this function:

◆ remove_edge() [7/7]

template<typename S , typename V , typename = typename V::input_ports_type>
void tbb::flow::interface10::remove_edge ( sender< S > &  output,
V &  input 
)
inline

Definition at line 3247 of file flow_graph.h.

References remove_edge(), and S.

3247  {
3248  remove_edge(output, get<0>(input.input_ports()));
3249 }
void remove_edge(sender< S > &output, V &input)
Definition: flow_graph.h:3247
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::interface10::send_if_memory_object ( opencl_device  device,
opencl_async_msg< T, Factory > &  dmsg 
)

Definition at line 743 of file flow_graph_opencl_node.h.

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

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

743  {
744  const T &t = dmsg.data( false );
745  typedef typename T::memory_object_type mem_obj_t;
746  mem_obj_t mem_obj = t.memory_object();
747  opencl_async_msg<mem_obj_t, Factory> d( mem_obj );
748  if ( dmsg.get_event() ) d.set_event( *dmsg.get_event() );
749  mem_obj.send( device, d );
750  if ( d.get_event() ) dmsg.set_event( *d.get_event() );
751 }
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
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::interface10::send_if_memory_object ( opencl_device  device,
T &  t 
)

Definition at line 754 of file flow_graph_opencl_node.h.

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

◆ send_if_memory_object() [3/3]

template<typename T >
std::enable_if<!is_memory_object_type<T>::value>::type tbb::flow::interface10::send_if_memory_object ( opencl_device  ,
T &   
)

Definition at line 762 of file flow_graph_opencl_node.h.

762 {};

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.