| /oneTBB/src/tbb/ |
| H A D | intrusive_list.h | 38 static intrusive_list_node& node ( T& item ) { return List::node(item); } in node() function 40 static T& item ( intrusive_list_node* node ) { return List::item(node); } in item() argument 42 static const T& item( const intrusive_list_node* node ) { return List::item(node); } in item() argument 134 __TBB_ASSERT( node(val).my_prev_node == &node(val) && node(val).my_next_node == &node(val), in push_front() 146 …__TBB_ASSERT( node(val).my_prev_node != &node(val) && node(val).my_next_node != &node(val), "Eleme… in remove() 147 …__TBB_ASSERT( node(val).my_prev_node->my_next_node == &node(val) && node(val).my_next_node->my_pre… in remove() 149 node(val).my_next_node->my_prev_node = node(val).my_prev_node; in remove() 150 node(val).my_prev_node->my_next_node = node(val).my_next_node; in remove() 152 node(val).my_prev_node = node(val).my_next_node = &node(val); in remove() 224 static T& item ( intrusive_list_node* node ) { return *static_cast<T*>(node); } in item() argument [all …]
|
| H A D | concurrent_monitor.h | 205 if (!node.my_initialized) { in prepare_wait() 206 node.init(); in prepare_wait() 210 node.reset(); in prepare_wait() 218 my_waitset.add(&node); in prepare_wait() 232 node.wait(); in commit_wait() 234 cancel_wait( node ); in commit_wait() 260 prepare_wait(node); in wait() 262 if (commit_wait(node)) { in wait() 266 prepare_wait(node); in wait() 269 cancel_wait(node); in wait() [all …]
|
| /oneTBB/include/oneapi/tbb/detail/ |
| H A D | _flow_graph_trace_impl.h | 45 static inline void fgt_alias_port(void *node, void *p, bool visible) { in fgt_alias_port() argument 75 fgt_internal_alias_input_port( node, port, name_index); in alias_input_port() 80 static void alias_port( void *node, PortsTuple &ports ) { in alias_port() 99 static void alias_port( void *node, PortsTuple &ports ) { 133 static void register_port( void *node, PortsTuple &ports ) { 141 static void register_port( void *node, PortsTuple &ports ) { 175 void *addr = const_cast<NodeType *>(node); 190 static inline void fgt_body( void *node, void *body ) { 281 static inline void fgt_async_reserve( void *node, void *graph ) { 285 static inline void fgt_async_commit( void *node, void * /*graph*/) { [all …]
|
| H A D | _flow_graph_node_set_impl.h | 157 static auto get_impl(NodeType& node, std::true_type) -> decltype(input_port<I>(node)) { 158 return input_port<I>(node); 162 static NodeType& get_impl(NodeType& node, std::false_type) { return node; } 167 static auto& get(NodeType& node) 169 static auto get(NodeType& node) -> decltype(get_impl(node, has_input_ports_type<NodeType>())) 179 static auto internal_get(NodeType& node, std::true_type) -> decltype(output_port<I>(node)) { 184 static NodeType& internal_get(NodeType& node, std::false_type) { return node;} 197 static AsyncNode& get_impl(AsyncNode& node, std::true_type) { return node; } 204 static auto get(NodeType& node) -> decltype(get_impl(node, is_async_node<NodeType>())) 255 make_edges(ns, node); [all …]
|
| H A D | _node_handle.h | 32 static typename NodeHandleType::node* get_node_ptr( NodeHandleType& nh ) { in get_node_ptr() 37 static NodeHandleType construct( typename NodeHandleType::node* node_ptr ) { in construct() 52 using node = Node; 86 node_handle_base( node* n ) : my_node(n) {} in node_handle_base() 91 … typename allocator_traits_type::template rebind_alloc<node> node_allocator(my_allocator); in internal_destroy() 96 node* get_node_ptr() { return my_node; } in get_node_ptr() 100 node* my_node; 128 node_handle( typename base_type::node* n ) : base_type(n) {} in node_handle() 149 node_handle( typename base_type::node* n ) : base_type(n) {} in node_handle()
|
| H A D | _concurrent_skip_list.h | 104 return node; in create() 114 allocator_traits::destroy(alloc, node); in destroy() 139 __TBB_ASSERT(node == nullptr || node->height() > level, "Broken internal structure"); in atomic_next() 724 return iterator(node); in begin() 729 return iterator(node); in end() 776 return node != nullptr && !my_compare(key, get_key(node)); in found() 1108 delete_node(node); in create_value_node() 1114 return node; in create_value_node() 1129 void delete_node( node_ptr node ) { in delete_node() argument 1133 void delete_value_node( node_ptr node ) { in delete_value_node() argument [all …]
|
| H A D | _concurrent_unordered_base.h | 915 void destroy_node( node_ptr node ) { in destroy_node() argument 916 if (node->is_dummy()) { in destroy_node() 1184 … for (node_ptr node = prev_node->next(); node != nullptr; prev_node = node, node = node->next()) { in internal_extract() local 1185 if (node == node_to_extract) { in internal_extract() 1323 for (node_ptr node = other.my_head.next(); node != nullptr; node = node->next()) { in internal_copy() local 1325 if (!node->is_dummy()) { in internal_copy() 1327 … new_node = create_node(node->order_key(), static_cast<value_node_ptr>(node)->value()); in internal_copy() 1330 new_node = create_dummy_node(node->order_key()); in internal_copy() 1343 for (node_ptr node = other.my_head.next(); node != nullptr; node = node->next()) { in internal_move() local 1345 if (!node->is_dummy()) { in internal_move() [all …]
|
| /oneTBB/test/tbb/ |
| H A D | test_profiling.cpp | 84 tbb::profiling::set_name(node, "async_node"); 91 tbb::flow::broadcast_node<int> node(g); 99 tbb::flow::buffer_node<int> node(g); 100 tbb::profiling::set_name(node, "buffer_node"); 162 tbb::profiling::set_name(node, "input_node"); 170 tbb::profiling::set_name(node, "join_node"); 177 tbb::flow::limiter_node<int> node(g, 1); variable 199 tbb::flow::overwrite_node<int> node(g); 207 tbb::flow::priority_queue_node<int> node(g); 215 tbb::flow::queue_node<int> node(g); [all …]
|
| H A D | test_partitioner.h | 309 if (!node) in push_node() 372 bool has_children(TreeNode *node) { return node->m_left || node->m_right; } in has_children() argument 381 bool has_left_child(TreeNode *node) { return node->m_left != nullptr; } in has_left_child() argument 394 if (node->m_left) in remove_node_recursively() 396 if (node->m_right) in remove_node_recursively() 398 delete node; in remove_node_recursively() local 407 size_t rangeSize = node->m_range_end - node->m_range_begin; 411 if (node->m_left) 425 if (node->m_left == nullptr && node->m_right == nullptr) in fill_leafs_impl() 427 if (node->m_left != nullptr) fill_leafs_impl(node->m_left, leafs); in fill_leafs_impl() [all …]
|
| /oneTBB/doc/main/tbb_userguide/ |
| H A D | Flow_Graph_Buffering_in_Nodes.rst | 8 to communicate data and to enforce dependencies. If a node passes a 10 the message by that node. As noted in the section on Single-push vs. 13 connected to the node, and whether the message is pushed or pulled. 16 There are times when a node cannot successfully push a message to any 18 of the node. The two possibilities are: 21 - The node stores the message to be forwarded later. 22 - The node discards the message. 26 not desired, the node should be connected to a buffering node that does 31 passed to another node: 40 the node that stored it. If a node is connected using ``make_edge`` the [all …]
|
| H A D | Predefined_Node_Types.rst | 7 You can define your own node types by inheriting from class graph_node, 9 your graph with the predefined node types already available in 12 detailed description of each node. 25 - A single-output node, with a generic output type. 29 …- A single-input single-output node that broadcasts its output to all successors. Has generic inpu… 33 …- A single-input multi-output node. It has a generic input type and several generic output type… 35 …- A single-input, single-output node that broadcasts each message received to all successors. I… 39 …nput, single-output node. There are several generic input types and the output type is a tuple … 41 …multi-output node. The input type is a tuple of generic types and there is one output port for … 45 …node that broadcasts its output to all successors. The main input type and output type are of t… [all …]
|
| H A D | Nodes.rst | 7 A node is a class that inherits from oneapi::tbb::flow::graph_node and also 9 both. A node performs some operation, usually on an incoming message and 14 While it is possible to define your own node types by inheriting from 15 graph_node, sender and receiver, it is more typical that predefined node 41 - The graph the node belongs to. 51 function_node. In this example, a node n is constructed that belongs to 53 invocation of the node to occur concurrently. The body is a lambda 71 After the node is constructed in the example above, you can pass 99 body to 2. And likewise, the node will wait for that task to complete 101 try_put do not block until a task is spawned; if a node cannot [all …]
|
| H A D | use_concurrency_limits.rst | 7 To control the number of instances of a single node, you can use the 8 concurrency limit on the node. To cause it to reject messages after it 9 reaches its concurrency limit, you construct it as a "rejecting" node. 12 A function node is constructed with one or more template arguments. The 13 third argument controls the buffer policy used by the node, and is by 16 buffers them internally. If the policy is set to rejecting the node will 70 concurrently. The node's concurrency threshold that limits the node to
|
| H A D | cancel_a_graph.rst | 44 When a graph execution is canceled, any node that has already started to 45 execute will execute to completion, but any node that has not started to 50 You can also get the task_group_context that a node belongs to from 51 within the node body and use it to cancel the execution of the graph it 84 You can get the task_group_context from a node's body even if the graph
|
| H A D | Edges.rst | 12 include a second node that squares the value it receives before printing 13 it and then connect that to the first node with an edge. 41 an edge from ``n`` to ``m``. The node ``n`` is created with unlimited concurrency, 45 be automatically passed to node ``m`` by the runtime library.
|
| H A D | always_use_wait_for_all.rst | 32 In the function above, the graph g and its node f are destroyed at the 35 successors connected to its node, but by then both the graph and the 36 node have been deleted out from underneath it. Placing a 38 destruction of the graph and node.
|
| H A D | estimate_flow_graph_performance.rst | 19 A critical path is the most time consuming path from a node with no 20 predecessors to a node with no successors. In a dependence graph, the 45 scheduling when estimating the time it takes for a node to execute 47 granularity of tasks therefore also apply to node bodies as well. If
|
| /oneTBB/test/common/ |
| H A D | test_follows_and_precedes_api.h | 50 NodeType& node, 59 NodeType& node, 64 tbb::flow::make_edge(node, buffer); 76 NodeType& node, 81 tbb::flow::make_edge(node, buffer); 93 NodeType& node, 98 node.clear(); 108 NodeType& node, 146 NodeType& node, 162 node.try_put(messages[0]); [all …]
|
| H A D | node_handling_support.h | 32 bool compare_handle_getters( const Handle& node, const std::pair<typename Handle::key_type, typenam… in compare_handle_getters() argument 33 return node.key() == value.first && node.mapped() == value.second; in compare_handle_getters() 37 bool compare_handle_getters( const Handle& node, const typename Handle::value_type& value ) { in compare_handle_getters() argument 38 return node.value() == value; in compare_handle_getters() 42 void set_node_handle_value( Handle& node, const std::pair<typename Handle::key_type, typename Handl… in set_node_handle_value() argument 43 node.key() = value.first; in set_node_handle_value() 44 node.mapped() = value.second; in set_node_handle_value() 48 void set_node_handle_value( Handle& node, const typename Handle::value_type& value ) { in set_node_handle_value() argument 49 node.value() = value; in set_node_handle_value()
|
| /oneTBB/test/conformance/ |
| H A D | conformance_sequencer_node.cpp | 101 oneapi::tbb::flow::sequencer_node<int> node(g, sequencer); 103 node.try_put(1); 105 …CHECK_MESSAGE((node.try_put(1) == false), "sequencer_node must rejects duplicate sequencer numbers… 115 oneapi::tbb::flow::sequencer_node<int> node(g, sequencer); 117 node.try_put(1); 118 node.try_put(0); 119 node.try_put(1); 123 CHECK_MESSAGE((node.try_get(tmp) == true), "Getting from sequencer should succeed"); 127 CHECK_MESSAGE((node.try_get(tmp) == true), "Getting from sequencer should succeed"); 131 CHECK_MESSAGE((node.try_get(tmp) == false), "Getting from sequencer should not succeed");
|
| /oneTBB/doc/main/reference/ |
| H A D | follows_and_precedes_functions.rst | 11 only be used while constructing the node. 20 The ``follows`` helper function specifies that the node being constructed is 23 The ``precedes`` helper function specifies that the node being constructed is 27 passed as the first argument to the constructor of the node. The graph argument for the 28 node being constructed is obtained either from the specified node set or the sequence of nodes pass… 55 /*unspecified*/ follows( NodeType& node, NodeTypes&... nodes ); 61 /*unspecified*/ precedes( NodeType& node, NodeTypes&... nodes );
|
| H A D | make_edges_function.rst | 16 The ``make_edges`` function template creates edges between a single node 17 and each node in a set of nodes. 19 There are two ways to connect nodes in a set and a single node using 43 void make_edges(node_set<Node, Nodes...>& set, NodeType& node); 46 void make_edges(NodeType& node, node_set<Node, Nodes...>& set);
|
| /oneTBB/examples/concurrent_priority_queue/shortpath/ |
| H A D | README.md | 4 It is parameterized by `N`, a number of nodes, and a start and end node in `[0..N)`. A graph is gen… 6 …set when the `g` estimate (shortest path from start to the node) is improved, even if the node has… 12 The generated graph follows a pattern in which the closer two pairs of node ids are together, the f… 35 * `start` - node to start path at. 36 * `end` - node to end path at.
|
| /oneTBB/include/oneapi/tbb/ |
| H A D | concurrent_hash_map.h | 374 using node = typename Container::node; variable 483 node* my_node; 631 class node; in __TBB_requires() local 642 class node : public node_base { in __TBB_requires() 644 node() {} in __TBB_requires() 645 ~node() {} in __TBB_requires() 698 node *n = static_cast<node*>( b->node_list.load(std::memory_order_relaxed) ); in __TBB_requires() 813 node *my_node; in __TBB_requires() 1281 node *n; in __TBB_requires() 1496 node *n = static_cast<node*>( src->node_list.load(std::memory_order_relaxed) ); in __TBB_requires() [all …]
|
| H A D | partitioner.h | 116 struct node { struct 117 node* my_parent{}; 120 node() = default; 121 node(node* parent, int ref_count) : in node() argument 127 struct wait_node : node { 128 wait_node() : node{ nullptr, 1 } {} in wait_node() 133 struct tree_node : public node { 137 tree_node(node* parent, int ref_count, small_object_allocator& alloc) in tree_node() 138 : node{parent, ref_count} in tree_node() 161 void fold_tree(node* n, const execution_data& ed) { in fold_tree() [all …]
|