Home ⌂Doc Index ◂Up ▴
Intel(R) Threading Building Blocks Doxygen Documentation  version 4.2.3
tbb::flow::interface11::streaming_node< tuple< Ports... >, JP, StreamFactory > Class Template Reference

#include <flow_graph.h>

Inheritance diagram for tbb::flow::interface11::streaming_node< tuple< Ports... >, JP, StreamFactory >:
Collaboration diagram for tbb::flow::interface11::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::interface11::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::interface11::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::interface11::streaming_node< tuple< Ports... >, JP, StreamFactory >::base_type
private

Definition at line 320 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::interface11::streaming_node< tuple< Ports... >, JP, StreamFactory >::device_selector_node
private

Definition at line 330 of file flow_graph.h.

◆ device_type

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

Definition at line 316 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::interface11::streaming_node< tuple< Ports... >, JP, StreamFactory >::device_with_key_type
private

Definition at line 319 of file flow_graph.h.

◆ indexer_node_output_type

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

Definition at line 328 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::interface11::streaming_node< tuple< Ports... >, JP, StreamFactory >::indexer_node_type
private

Definition at line 327 of file flow_graph.h.

◆ input_sequence

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

Definition at line 324 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::interface11::streaming_node< tuple< Ports... >, JP, StreamFactory >::input_tuple
private

Definition at line 312 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::interface11::streaming_node< tuple< Ports... >, JP, StreamFactory >::kernel_input_tuple
private

Definition at line 329 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::interface11::streaming_node< tuple< Ports... >, JP, StreamFactory >::kernel_multifunction_node
private

Definition at line 331 of file flow_graph.h.

◆ kernel_type

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

Definition at line 317 of file flow_graph.h.

◆ key_type

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

Definition at line 314 of file flow_graph.h.

◆ output_sequence

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

Definition at line 325 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::interface11::streaming_node< tuple< Ports... >, JP, StreamFactory >::output_tuple
private

Definition at line 313 of file flow_graph.h.

Constructor & Destructor Documentation

◆ streaming_node() [1/3]

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

Definition at line 675 of file flow_graph.h.

682  }
683 
684 #if TBB_DEPRECATED_FLOW_NODE_EXTRACTION
685  // continue_receiver must contain its own built_predecessors because it does
686  // not have a node_cache.
687  built_predecessors_type my_built_predecessors;
static tbb::task *const SUCCESSFULLY_ENQUEUED

◆ streaming_node() [2/3]

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

Definition at line 689 of file flow_graph.h.

698  {
699  my_current_count = 0;
700  if (f & rf_clear_edges) {

◆ streaming_node() [3/3]

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

Definition at line 702 of file flow_graph.h.

713  { return true; }
714 
715 }; // class continue_receiver

◆ ~streaming_node()

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

Definition at line 717 of file flow_graph.h.

721  {

Member Function Documentation

◆ enqueue_kernel()

template<typename... Ports, typename JP , typename StreamFactory >
template<typename ... Args>
void tbb::flow::interface11::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 669 of file flow_graph.h.

672  {

◆ get_input_ports() [1/2]

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

Definition at line 334 of file flow_graph.h.

341  :

◆ get_input_ports() [2/2]

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

Definition at line 343 of file flow_graph.h.

◆ get_output_ports() [1/2]

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

Definition at line 339 of file flow_graph.h.

341  :

◆ get_output_ports() [2/2]

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

Definition at line 347 of file flow_graph.h.

350  {

◆ make_args_storage()

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

Definition at line 659 of file flow_graph.h.

660  {
661  spin_mutex::scoped_lock l(my_mutex);
662  return my_built_predecessors.edge_count();
friend class scoped_lock
Definition: spin_mutex.h:179

◆ make_edges() [1/2]

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

Definition at line 358 of file flow_graph.h.

358  {
359  template< typename, typename > friend class run_and_put_task;
360 
361  template< typename, typename > friend class internal::broadcast_cache;
362  template< typename, typename > friend class internal::round_robin_cache;
363  template< typename, typename > friend class internal::successor_cache;
A cache of successors that are put in a round-robin fashion.
An abstract cache of successors.
A cache of successors that are broadcast to.

◆ make_edges() [2/2]

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

Definition at line 365 of file flow_graph.h.

368  :

◆ make_Nth_edge()

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

Definition at line 352 of file flow_graph.h.

358  {

◆ notify_new_device()

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

Definition at line 664 of file flow_graph.h.

667  :
668  template< typename R, typename B > friend class run_and_put_task;

◆ reset_node()

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

Definition at line 731 of file flow_graph.h.

735 {

◆ set_args()

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

Definition at line 723 of file flow_graph.h.

735  {

Member Data Documentation

◆ my_args_storage

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

Definition at line 740 of file flow_graph.h.

◆ my_device_selector

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

Definition at line 735 of file flow_graph.h.

◆ my_device_selector_node

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

Definition at line 736 of file flow_graph.h.

◆ my_indexer_node

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

Definition at line 734 of file flow_graph.h.

◆ my_join_node

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

Definition at line 737 of file flow_graph.h.

◆ my_kernel_node

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

Definition at line 738 of file flow_graph.h.

◆ NUM_INPUTS

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

Definition at line 321 of file flow_graph.h.

◆ NUM_OUTPUTS

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

Definition at line 322 of file flow_graph.h.


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

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.