Intel(R) Threading Building Blocks Doxygen Documentation  version 4.2.3
tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory > Class Template Reference

#include <flow_graph.h>

Inheritance diagram for tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >:
Collaboration diagram for tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >:

Classes

class  args_storage
 
class  args_storage_base
 
class  device_selector
 
class  device_selector_base
 
class  device_selector_body
 
class  kernel_body
 
struct  wrap_to_async
 
struct  wrap_to_async< T, std::false_type >
 

Public Member Functions

template<typename DeviceSelector >
 streaming_node (graph &g, const kernel_type &kernel, DeviceSelector d, StreamFactory &f)
 
 streaming_node (const streaming_node &node)
 
 streaming_node (streaming_node &&node)
 
 ~streaming_node ()
 
template<typename... Args>
void set_args (Args &&... args)
 

Protected Types

typedef StreamFactory::device_type device_type
 
typedef StreamFactory::kernel_type kernel_type
 

Protected Member Functions

void reset_node (reset_flags=rf_reset_protocol) __TBB_override
 
- Protected Member Functions inherited from tbb::flow::interface10::internal::kernel_executor_helper< StreamFactory, internal::streaming_node_traits< JP, StreamFactory, Ports... >::kernel_input_tuple >
void enqueue_kernel_impl (kernel_input_tuple &, StreamFactory &factory, device_type device, const kernel_type &kernel, Args &... args) const
 

Private Types

typedef internal::streaming_node_traits< JP, StreamFactory, Ports... >::input_tuple input_tuple
 
typedef internal::streaming_node_traits< JP, StreamFactory, Ports... >::output_tuple output_tuple
 
typedef internal::key_from_policy< JP >::type key_type
 
typedef internal::streaming_device_with_key< device_type, key_typedevice_with_key_type
 
typedef composite_node< input_tuple, output_tuplebase_type
 
typedef internal::make_sequence< NUM_INPUTS >::type input_sequence
 
typedef internal::make_sequence< NUM_OUTPUTS >::type output_sequence
 
typedef internal::streaming_node_traits< JP, StreamFactory, Ports... >::indexer_node_type indexer_node_type
 
typedef indexer_node_type::output_type indexer_node_output_type
 
typedef internal::streaming_node_traits< JP, StreamFactory, Ports... >::kernel_input_tuple kernel_input_tuple
 
typedef multifunction_node< indexer_node_output_type, kernel_input_tupledevice_selector_node
 
typedef multifunction_node< kernel_input_tuple, output_tuplekernel_multifunction_node
 

Private Member Functions

template<int... S>
base_type::input_ports_type get_input_ports (internal::sequence< S... >)
 
template<int... S>
base_type::output_ports_type get_output_ports (internal::sequence< S... >)
 
base_type::input_ports_type get_input_ports ()
 
base_type::output_ports_type get_output_ports ()
 
template<int N>
int make_Nth_edge ()
 
template<int... S>
void make_edges (internal::sequence< S... >)
 
void make_edges ()
 
template<typename... Args>
args_storage_base * make_args_storage (const args_storage_base &storage, Args &&... args) const
 
void notify_new_device (device_type d)
 
template<typename ... Args>
void enqueue_kernel (kernel_input_tuple &ip, StreamFactory &factory, device_type device, const kernel_type &kernel, Args &... args) const
 

Private Attributes

indexer_node_type my_indexer_node
 
device_selector_base * my_device_selector
 
device_selector_node my_device_selector_node
 
join_node< kernel_input_tuple, JP > my_join_node
 
kernel_multifunction_node my_kernel_node
 
args_storage_base * my_args_storage
 

Static Private Attributes

static const size_t NUM_INPUTS = tuple_size<input_tuple>::value
 
static const size_t NUM_OUTPUTS = tuple_size<output_tuple>::value
 

Detailed Description

template<typename... Ports, typename JP, typename StreamFactory>
class tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >

Definition at line 306 of file flow_graph.h.

Member Typedef Documentation

◆ base_type

template<typename... Ports, typename JP , typename StreamFactory >
typedef composite_node<input_tuple, output_tuple> tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::base_type
private

Definition at line 319 of file flow_graph.h.

◆ device_selector_node

template<typename... Ports, typename JP , typename StreamFactory >
typedef multifunction_node<indexer_node_output_type, kernel_input_tuple> tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::device_selector_node
private

Definition at line 329 of file flow_graph.h.

◆ device_type

template<typename... Ports, typename JP , typename StreamFactory >
typedef StreamFactory::device_type tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::device_type
protected

Definition at line 315 of file flow_graph.h.

◆ device_with_key_type

template<typename... Ports, typename JP , typename StreamFactory >
typedef internal::streaming_device_with_key<device_type, key_type> tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::device_with_key_type
private

Definition at line 318 of file flow_graph.h.

◆ indexer_node_output_type

template<typename... Ports, typename JP , typename StreamFactory >
typedef indexer_node_type::output_type tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::indexer_node_output_type
private

Definition at line 327 of file flow_graph.h.

◆ indexer_node_type

template<typename... Ports, typename JP , typename StreamFactory >
typedef internal::streaming_node_traits<JP, StreamFactory, Ports...>::indexer_node_type tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::indexer_node_type
private

Definition at line 326 of file flow_graph.h.

◆ input_sequence

template<typename... Ports, typename JP , typename StreamFactory >
typedef internal::make_sequence<NUM_INPUTS>::type tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::input_sequence
private

Definition at line 323 of file flow_graph.h.

◆ input_tuple

template<typename... Ports, typename JP , typename StreamFactory >
typedef internal::streaming_node_traits<JP, StreamFactory, Ports...>::input_tuple tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::input_tuple
private

Definition at line 311 of file flow_graph.h.

◆ kernel_input_tuple

template<typename... Ports, typename JP , typename StreamFactory >
typedef internal::streaming_node_traits<JP, StreamFactory, Ports...>::kernel_input_tuple tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::kernel_input_tuple
private

Definition at line 328 of file flow_graph.h.

◆ kernel_multifunction_node

template<typename... Ports, typename JP , typename StreamFactory >
typedef multifunction_node<kernel_input_tuple, output_tuple> tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::kernel_multifunction_node
private

Definition at line 330 of file flow_graph.h.

◆ kernel_type

template<typename... Ports, typename JP , typename StreamFactory >
typedef StreamFactory::kernel_type tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::kernel_type
protected

Definition at line 316 of file flow_graph.h.

◆ key_type

template<typename... Ports, typename JP , typename StreamFactory >
typedef internal::key_from_policy<JP>::type tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::key_type
private

Definition at line 313 of file flow_graph.h.

◆ output_sequence

template<typename... Ports, typename JP , typename StreamFactory >
typedef internal::make_sequence<NUM_OUTPUTS>::type tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::output_sequence
private

Definition at line 324 of file flow_graph.h.

◆ output_tuple

template<typename... Ports, typename JP , typename StreamFactory >
typedef internal::streaming_node_traits<JP, StreamFactory, Ports...>::output_tuple tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::output_tuple
private

Definition at line 312 of file flow_graph.h.

Constructor & Destructor Documentation

◆ streaming_node() [1/3]

template<typename... Ports, typename JP , typename StreamFactory >
template<typename DeviceSelector >
tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::streaming_node ( graph g,
const kernel_type kernel,
DeviceSelector  d,
StreamFactory &  f 
)
inline

Definition at line 673 of file flow_graph.h.

683  { return true; }
684 
685 }; // class continue_receiver

◆ streaming_node() [2/3]

template<typename... Ports, typename JP , typename StreamFactory >
tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::streaming_node ( const streaming_node< tuple< Ports... >, JP, StreamFactory > &  node)
inline

Definition at line 687 of file flow_graph.h.

691  {
692  return t.key();
693  }
694 #endif /* __TBB_PREVIEW_MESSAGE_BASED_KEY_MATCHING */
695 
696  using interface10::sender;
697  using interface10::receiver;
698  using interface10::continue_receiver;

◆ streaming_node() [3/3]

template<typename... Ports, typename JP , typename StreamFactory >
tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::streaming_node ( streaming_node< tuple< Ports... >, JP, StreamFactory > &&  node)
inline

Definition at line 700 of file flow_graph.h.

705  {
706 namespace flow {
707 namespace interface10 {
708 
712 #if __TBB_PREVIEW_ASYNC_MSG

◆ ~streaming_node()

template<typename... Ports, typename JP , typename StreamFactory >
tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::~streaming_node ( )
inline

Definition at line 715 of file flow_graph.h.

718  : my_graph(g), current_node(NULL)

Member Function Documentation

◆ enqueue_kernel()

template<typename... Ports, typename JP , typename StreamFactory >
template<typename ... Args>
void tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::enqueue_kernel ( kernel_input_tuple ip,
StreamFactory &  factory,
device_type  device,
const kernel_type kernel,
Args &...  args 
) const
inlineprivate

Definition at line 667 of file flow_graph.h.

668  {
669  my_current_count = 0;

◆ get_input_ports() [1/2]

template<typename... Ports, typename JP , typename StreamFactory >
template<int... S>
base_type::input_ports_type tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::get_input_ports ( internal::sequence< S... >  )
inlineprivate

Definition at line 333 of file flow_graph.h.

337  :

◆ get_input_ports() [2/2]

template<typename... Ports, typename JP , typename StreamFactory >
base_type::input_ports_type tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::get_input_ports ( )
inlineprivate

Definition at line 342 of file flow_graph.h.

342  {}
343 

◆ get_output_ports() [1/2]

template<typename... Ports, typename JP , typename StreamFactory >
template<int... S>
base_type::output_ports_type tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::get_output_ports ( internal::sequence< S... >  )
inlineprivate

Definition at line 338 of file flow_graph.h.

342  {}

◆ get_output_ports() [2/2]

template<typename... Ports, typename JP , typename StreamFactory >
base_type::output_ports_type tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::get_output_ports ( )
inlineprivate

Definition at line 346 of file flow_graph.h.

346  {
347  task *res = try_put_task(t);
348  if (!res) return false;
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 ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task * task

◆ make_args_storage()

template<typename... Ports, typename JP , typename StreamFactory >
template<typename... Args>
args_storage_base* tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::make_args_storage ( const args_storage_base &  storage,
Args &&...  args 
) const
inlineprivate

Definition at line 657 of file flow_graph.h.

668  {

◆ make_edges() [1/2]

template<typename... Ports, typename JP , typename StreamFactory >
template<int... S>
void tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::make_edges ( internal::sequence< S... >  )
inlineprivate

Definition at line 357 of file flow_graph.h.

358  { return false; }
359 
361  virtual bool remove_predecessor( predecessor_type & ) { return false; }
362 

◆ make_edges() [2/2]

template<typename... Ports, typename JP , typename StreamFactory >
void tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::make_edges ( )
inlineprivate

Definition at line 364 of file flow_graph.h.

372  :
373  template<typename X>

◆ make_Nth_edge()

template<typename... Ports, typename JP , typename StreamFactory >
template<int N>
int tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::make_Nth_edge ( )
inlineprivate

Definition at line 351 of file flow_graph.h.

358  { return false; }

◆ notify_new_device()

template<typename... Ports, typename JP , typename StreamFactory >
void tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::notify_new_device ( device_type  d)
inlineprivate

Definition at line 662 of file flow_graph.h.

668  {

◆ reset_node()

template<typename... Ports, typename JP , typename StreamFactory >
void tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::reset_node ( reset_flags  = rf_reset_protocol)
inlineprotected

Definition at line 729 of file flow_graph.h.

◆ set_args()

template<typename... Ports, typename JP , typename StreamFactory >
template<typename... Args>
void tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::set_args ( Args &&...  args)
inline

Definition at line 721 of file flow_graph.h.

725  {
726  __TBB_ASSERT(current_node, "graph_iterator at end");
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
Definition: tbb_stddef.h:165

Member Data Documentation

◆ my_args_storage

template<typename... Ports, typename JP , typename StreamFactory >
args_storage_base* tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::my_args_storage
private

Definition at line 738 of file flow_graph.h.

◆ my_device_selector

template<typename... Ports, typename JP , typename StreamFactory >
device_selector_base* tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::my_device_selector
private

Definition at line 733 of file flow_graph.h.

◆ my_device_selector_node

template<typename... Ports, typename JP , typename StreamFactory >
device_selector_node tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::my_device_selector_node
private

Definition at line 734 of file flow_graph.h.

◆ my_indexer_node

template<typename... Ports, typename JP , typename StreamFactory >
indexer_node_type tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::my_indexer_node
private

Definition at line 732 of file flow_graph.h.

◆ my_join_node

template<typename... Ports, typename JP , typename StreamFactory >
join_node<kernel_input_tuple, JP> tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::my_join_node
private

Definition at line 735 of file flow_graph.h.

◆ my_kernel_node

template<typename... Ports, typename JP , typename StreamFactory >
kernel_multifunction_node tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::my_kernel_node
private

Definition at line 736 of file flow_graph.h.

◆ NUM_INPUTS

template<typename... Ports, typename JP , typename StreamFactory >
const size_t tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::NUM_INPUTS = tuple_size<input_tuple>::value
staticprivate

Definition at line 320 of file flow_graph.h.

◆ NUM_OUTPUTS

template<typename... Ports, typename JP , typename StreamFactory >
const size_t tbb::flow::interface10::streaming_node< tuple< Ports... >, JP, StreamFactory >::NUM_OUTPUTS = tuple_size<output_tuple>::value
staticprivate

Definition at line 321 of file flow_graph.h.


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

Copyright © 2005-2019 Intel Corporation. All Rights Reserved.

Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are registered trademarks or trademarks of Intel Corporation or its subsidiaries in the United States and other countries.

* Other names and brands may be claimed as the property of others.