Skip to content

Commit f9b1328

Browse files
updated regression and parallel_for
1 parent f04c25d commit f9b1328

22 files changed

Lines changed: 211 additions & 114 deletions

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -643,11 +643,11 @@ auto [S, T] = tf.parallel_for(
643643
[] (int i) {
644644
std::cout << "AB and CD run in parallel" << '\n';
645645
},
646-
2 // group two tasks at a time
646+
2 // partition the range to two groups
647647
);
648648
```
649649
650-
By default, taskflow performs an even partition over worker threads
650+
By default, taskflow performs an even partition over the maximum hardware concurrency
651651
if the group size is not specified (or equal to 0).
652652
653653
In addition to range-based iterator, `parallel_for` has another overload of index-based loop.
@@ -661,7 +661,7 @@ auto [S, T] = tf.parallel_for(
661661
[] (int i) {
662662
std::cout << "parallel_for on index " << i << std::endl;
663663
},
664-
2 // group two tasks at a time
664+
2 // partition the range to two groups
665665
);
666666
// will print 0, 2, 4, 6, 8 (three groups, {0, 2}, {4, 6}, {8})
667667
```

benchmark/matrix_multiplication/taskflow.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,27 +11,27 @@ void matrix_multiplication_taskflow(unsigned num_threads) {
1111
for(int j=0; j<N; ++j) {
1212
a[i][j] = i + j;
1313
}
14-
});
14+
}, num_threads);
1515

1616
auto pb = taskflow.parallel_for(0, N, 1, [&] (int i) {
1717
for(int j=0; j<N; ++j) {
1818
b[i][j] = i * j;
1919
}
20-
});
20+
}, num_threads);
2121

2222
auto pc = taskflow.parallel_for(0, N, 1, [&] (int i) {
2323
for(int j=0; j<N; ++j) {
2424
c[i][j] = 0;;
2525
}
26-
});
26+
}, num_threads);
2727

2828
auto pr = taskflow.parallel_for(0, N, 1, [&] (int i) {
2929
for(int j=0; j<N; ++j) {
3030
for(int k=0; k<N; k++) {
3131
c[i][j] += a[i][k] * b[k][j];
3232
}
3333
}
34-
});
34+
}, num_threads);
3535

3636
pa.second.precede(pr.first);
3737
pb.second.precede(pr.first);

benchmark/regression.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,11 @@ def main():
9999
rows = len(args.benchmarks)
100100
cols = len(args.threads)
101101

102+
figc = plot.rcParams["figure.figsize"][0]
103+
figr = plot.rcParams["figure.figsize"][1]
104+
105+
plot.rcParams["figure.figsize"] = [figc*cols*0.5, figr*rows*0.5]
106+
102107
fig, axes = plot.subplots(rows, cols)
103108
plot_index = 1
104109

docs/chapter3.html

Lines changed: 13 additions & 13 deletions
Large diffs are not rendered by default.

docs/classtf_1_1FlowBuilder-members.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,8 @@
107107
<tr class="even"><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#ae62feb52131f930695357dca68ea2acb">gather</a>(std::initializer_list&lt; Task &gt; others, Task A)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
108108
<tr><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a90f3d9b9d6fcf4df8e7d7878dfdd130d">linearize</a>(std::vector&lt; Task &gt; &amp;tasks)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
109109
<tr class="even"><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a4ec89b554d15ad5fb96f4fdb10dbbb16">linearize</a>(std::initializer_list&lt; Task &gt; tasks)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
110-
<tr><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a84d411f16939bc158c5a90256e5d210e">parallel_for</a>(I beg, I end, C &amp;&amp;callable, size_t chunk=0)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
111-
<tr class="even"><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#abe18f8824cba16cde03e0dea8fae14ac">parallel_for</a>(I beg, I end, I step, C &amp;&amp;callable, size_t chunk=0)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
110+
<tr><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a644d7ff0f19ca155a2e7d56b1cdb3a0b">parallel_for</a>(I beg, I end, C &amp;&amp;callable, size_t partitions=0)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
111+
<tr class="even"><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#acfce9d2800a097202bdd4047f205dacf">parallel_for</a>(I beg, I end, I step, C &amp;&amp;callable, size_t partitions=0)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
112112
<tr><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#acab0b4ac82260f47fdb36a3244ee3aaf">placeholder</a>()</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
113113
<tr class="even"><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#af7c4a5d732d49bd63d554a92cd240f3f">precede</a>(Task A, Task B)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
114114
<tr><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a06b06b57f8ec8bb060951fc71dd375fb">reduce</a>(I beg, I end, T &amp;result, B &amp;&amp;bop)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>

docs/classtf_1_1FlowBuilder.html

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -136,14 +136,14 @@
136136
<tr class="memitem:acf423e2775a25c2b8be4dce7dae8880a"><td class="memTemplItemLeft" align="right" valign="top">auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#acf423e2775a25c2b8be4dce7dae8880a">silent_emplace</a> (C &amp;&amp;... callables)</td></tr>
137137
<tr class="memdesc:acf423e2775a25c2b8be4dce7dae8880a"><td class="mdescLeft">&#160;</td><td class="mdescRight">the same as <a class="el" href="classtf_1_1FlowBuilder.html#a4d52a7fe2814b264846a2085e931652c" title="creates a task from a given callable object ">tf::FlowBuilder::emplace</a> (starting at 2.1.0) <br /></td></tr>
138138
<tr class="separator:acf423e2775a25c2b8be4dce7dae8880a"><td class="memSeparator" colspan="2">&#160;</td></tr>
139-
<tr class="memitem:a84d411f16939bc158c5a90256e5d210e"><td class="memTemplParams" colspan="2">template&lt;typename I , typename C &gt; </td></tr>
140-
<tr class="memitem:a84d411f16939bc158c5a90256e5d210e"><td class="memTemplItemLeft" align="right" valign="top"><a class="elRef" doxygen="/home/twhuang/PhD/Code/cpp-taskflow/doxygen/cppreference-doxygen-web.tag.xml:http://en.cppreference.com/w/" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt; <a class="el" href="classtf_1_1Task.html">Task</a>, <a class="el" href="classtf_1_1Task.html">Task</a> &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#a84d411f16939bc158c5a90256e5d210e">parallel_for</a> (I beg, I end, C &amp;&amp;callable, size_t chunk=0)</td></tr>
141-
<tr class="memdesc:a84d411f16939bc158c5a90256e5d210e"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructs a task dependency graph of range-based parallel_for <a href="#a84d411f16939bc158c5a90256e5d210e">More...</a><br /></td></tr>
142-
<tr class="separator:a84d411f16939bc158c5a90256e5d210e"><td class="memSeparator" colspan="2">&#160;</td></tr>
143-
<tr class="memitem:abe18f8824cba16cde03e0dea8fae14ac"><td class="memTemplParams" colspan="2">template&lt;typename I , typename C , std::enable_if_t&lt; std::is_arithmetic_v&lt; I &gt;, void &gt; * = nullptr&gt; </td></tr>
144-
<tr class="memitem:abe18f8824cba16cde03e0dea8fae14ac"><td class="memTemplItemLeft" align="right" valign="top"><a class="elRef" doxygen="/home/twhuang/PhD/Code/cpp-taskflow/doxygen/cppreference-doxygen-web.tag.xml:http://en.cppreference.com/w/" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt; <a class="el" href="classtf_1_1Task.html">Task</a>, <a class="el" href="classtf_1_1Task.html">Task</a> &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#abe18f8824cba16cde03e0dea8fae14ac">parallel_for</a> (I beg, I end, I step, C &amp;&amp;callable, size_t chunk=0)</td></tr>
145-
<tr class="memdesc:abe18f8824cba16cde03e0dea8fae14ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructs a task dependency graph of index-based parallel_for <a href="#abe18f8824cba16cde03e0dea8fae14ac">More...</a><br /></td></tr>
146-
<tr class="separator:abe18f8824cba16cde03e0dea8fae14ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
139+
<tr class="memitem:a644d7ff0f19ca155a2e7d56b1cdb3a0b"><td class="memTemplParams" colspan="2">template&lt;typename I , typename C &gt; </td></tr>
140+
<tr class="memitem:a644d7ff0f19ca155a2e7d56b1cdb3a0b"><td class="memTemplItemLeft" align="right" valign="top"><a class="elRef" doxygen="/home/twhuang/PhD/Code/cpp-taskflow/doxygen/cppreference-doxygen-web.tag.xml:http://en.cppreference.com/w/" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt; <a class="el" href="classtf_1_1Task.html">Task</a>, <a class="el" href="classtf_1_1Task.html">Task</a> &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#a644d7ff0f19ca155a2e7d56b1cdb3a0b">parallel_for</a> (I beg, I end, C &amp;&amp;callable, size_t partitions=0)</td></tr>
141+
<tr class="memdesc:a644d7ff0f19ca155a2e7d56b1cdb3a0b"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructs a task dependency graph of range-based parallel_for <a href="#a644d7ff0f19ca155a2e7d56b1cdb3a0b">More...</a><br /></td></tr>
142+
<tr class="separator:a644d7ff0f19ca155a2e7d56b1cdb3a0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
143+
<tr class="memitem:acfce9d2800a097202bdd4047f205dacf"><td class="memTemplParams" colspan="2">template&lt;typename I , typename C , std::enable_if_t&lt; std::is_arithmetic_v&lt; I &gt;, void &gt; * = nullptr&gt; </td></tr>
144+
<tr class="memitem:acfce9d2800a097202bdd4047f205dacf"><td class="memTemplItemLeft" align="right" valign="top"><a class="elRef" doxygen="/home/twhuang/PhD/Code/cpp-taskflow/doxygen/cppreference-doxygen-web.tag.xml:http://en.cppreference.com/w/" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt; <a class="el" href="classtf_1_1Task.html">Task</a>, <a class="el" href="classtf_1_1Task.html">Task</a> &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#acfce9d2800a097202bdd4047f205dacf">parallel_for</a> (I beg, I end, I step, C &amp;&amp;callable, size_t partitions=0)</td></tr>
145+
<tr class="memdesc:acfce9d2800a097202bdd4047f205dacf"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructs a task dependency graph of index-based parallel_for <a href="#acfce9d2800a097202bdd4047f205dacf">More...</a><br /></td></tr>
146+
<tr class="separator:acfce9d2800a097202bdd4047f205dacf"><td class="memSeparator" colspan="2">&#160;</td></tr>
147147
<tr class="memitem:a06b06b57f8ec8bb060951fc71dd375fb"><td class="memTemplParams" colspan="2">template&lt;typename I , typename T , typename B &gt; </td></tr>
148148
<tr class="memitem:a06b06b57f8ec8bb060951fc71dd375fb"><td class="memTemplItemLeft" align="right" valign="top"><a class="elRef" doxygen="/home/twhuang/PhD/Code/cpp-taskflow/doxygen/cppreference-doxygen-web.tag.xml:http://en.cppreference.com/w/" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt; <a class="el" href="classtf_1_1Task.html">Task</a>, <a class="el" href="classtf_1_1Task.html">Task</a> &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#a06b06b57f8ec8bb060951fc71dd375fb">reduce</a> (I beg, I end, T &amp;result, B &amp;&amp;bop)</td></tr>
149149
<tr class="memdesc:a06b06b57f8ec8bb060951fc71dd375fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">construct a task dependency graph of parallel reduction <a href="#a06b06b57f8ec8bb060951fc71dd375fb">More...</a><br /></td></tr>
@@ -545,8 +545,8 @@ <h2 class="memtitle"><span class="permalink"><a href="#a4ec89b554d15ad5fb96f4fdb
545545

546546
</div>
547547
</div>
548-
<a id="a84d411f16939bc158c5a90256e5d210e"></a>
549-
<h2 class="memtitle"><span class="permalink"><a href="#a84d411f16939bc158c5a90256e5d210e">&#9670;&nbsp;</a></span>parallel_for() <span class="overload">[1/2]</span></h2>
548+
<a id="a644d7ff0f19ca155a2e7d56b1cdb3a0b"></a>
549+
<h2 class="memtitle"><span class="permalink"><a href="#a644d7ff0f19ca155a2e7d56b1cdb3a0b">&#9670;&nbsp;</a></span>parallel_for() <span class="overload">[1/2]</span></h2>
550550

551551
<div class="memitem">
552552
<div class="memproto">
@@ -575,7 +575,7 @@ <h2 class="memtitle"><span class="permalink"><a href="#a84d411f16939bc158c5a9025
575575
<td class="paramkey"></td>
576576
<td></td>
577577
<td class="paramtype">size_t&#160;</td>
578-
<td class="paramname"><em>chunk</em> = <code>0</code>&#160;</td>
578+
<td class="paramname"><em>partitions</em> = <code>0</code>&#160;</td>
579579
</tr>
580580
<tr>
581581
<td></td>
@@ -599,16 +599,16 @@ <h2 class="memtitle"><span class="permalink"><a href="#a84d411f16939bc158c5a9025
599599
<tr><td class="paramname">beg</td><td>iterator to the beginning (inclusive) </td></tr>
600600
<tr><td class="paramname">end</td><td>iterator to the end (exclusive) </td></tr>
601601
<tr><td class="paramname">callable</td><td>a callable object to be applied to </td></tr>
602-
<tr><td class="paramname">chunk</td><td>number of works per thread</td></tr>
602+
<tr><td class="paramname">partitions</td><td>number of partitions</td></tr>
603603
</table>
604604
</dd>
605605
</dl>
606606
<dl class="section return"><dt>Returns</dt><dd>a pair of <a class="el" href="classtf_1_1Task.html" title="Handle to modify and access a task. ">Task</a> handles to the beginning and the end of the graph </dd></dl>
607607

608608
</div>
609609
</div>
610-
<a id="abe18f8824cba16cde03e0dea8fae14ac"></a>
611-
<h2 class="memtitle"><span class="permalink"><a href="#abe18f8824cba16cde03e0dea8fae14ac">&#9670;&nbsp;</a></span>parallel_for() <span class="overload">[2/2]</span></h2>
610+
<a id="acfce9d2800a097202bdd4047f205dacf"></a>
611+
<h2 class="memtitle"><span class="permalink"><a href="#acfce9d2800a097202bdd4047f205dacf">&#9670;&nbsp;</a></span>parallel_for() <span class="overload">[2/2]</span></h2>
612612

613613
<div class="memitem">
614614
<div class="memproto">
@@ -643,7 +643,7 @@ <h2 class="memtitle"><span class="permalink"><a href="#abe18f8824cba16cde03e0dea
643643
<td class="paramkey"></td>
644644
<td></td>
645645
<td class="paramtype">size_t&#160;</td>
646-
<td class="paramname"><em>chunk</em> = <code>0</code>&#160;</td>
646+
<td class="paramname"><em>partitions</em> = <code>0</code>&#160;</td>
647647
</tr>
648648
<tr>
649649
<td></td>
@@ -668,7 +668,7 @@ <h2 class="memtitle"><span class="permalink"><a href="#abe18f8824cba16cde03e0dea
668668
<tr><td class="paramname">end</td><td>index to the end (exclusive) </td></tr>
669669
<tr><td class="paramname">step</td><td>step size </td></tr>
670670
<tr><td class="paramname">callable</td><td>a callable object to be applied to </td></tr>
671-
<tr><td class="paramname">chunk</td><td>number of works per thread</td></tr>
671+
<tr><td class="paramname">partitions</td><td>number of partitions</td></tr>
672672
</table>
673673
</dd>
674674
</dl>

docs/classtf_1_1FlowBuilder.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ var classtf_1_1FlowBuilder =
99
[ "gather", "classtf_1_1FlowBuilder.html#ae62feb52131f930695357dca68ea2acb", null ],
1010
[ "linearize", "classtf_1_1FlowBuilder.html#a90f3d9b9d6fcf4df8e7d7878dfdd130d", null ],
1111
[ "linearize", "classtf_1_1FlowBuilder.html#a4ec89b554d15ad5fb96f4fdb10dbbb16", null ],
12-
[ "parallel_for", "classtf_1_1FlowBuilder.html#a84d411f16939bc158c5a90256e5d210e", null ],
13-
[ "parallel_for", "classtf_1_1FlowBuilder.html#abe18f8824cba16cde03e0dea8fae14ac", null ],
12+
[ "parallel_for", "classtf_1_1FlowBuilder.html#a644d7ff0f19ca155a2e7d56b1cdb3a0b", null ],
13+
[ "parallel_for", "classtf_1_1FlowBuilder.html#acfce9d2800a097202bdd4047f205dacf", null ],
1414
[ "placeholder", "classtf_1_1FlowBuilder.html#acab0b4ac82260f47fdb36a3244ee3aaf", null ],
1515
[ "precede", "classtf_1_1FlowBuilder.html#af7c4a5d732d49bd63d554a92cd240f3f", null ],
1616
[ "reduce", "classtf_1_1FlowBuilder.html#a06b06b57f8ec8bb060951fc71dd375fb", null ],

docs/classtf_1_1Subflow-members.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,8 @@
111111
<tr class="even"><td class="entry"><a class="el" href="classtf_1_1Subflow.html#afb178f1e81f2d37652803023da5847ce">joined</a>() const</td><td class="entry"><a class="el" href="classtf_1_1Subflow.html">tf::Subflow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
112112
<tr><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a90f3d9b9d6fcf4df8e7d7878dfdd130d">linearize</a>(std::vector&lt; Task &gt; &amp;tasks)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
113113
<tr class="even"><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a4ec89b554d15ad5fb96f4fdb10dbbb16">linearize</a>(std::initializer_list&lt; Task &gt; tasks)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
114-
<tr><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a84d411f16939bc158c5a90256e5d210e">parallel_for</a>(I beg, I end, C &amp;&amp;callable, size_t chunk=0)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
115-
<tr class="even"><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#abe18f8824cba16cde03e0dea8fae14ac">parallel_for</a>(I beg, I end, I step, C &amp;&amp;callable, size_t chunk=0)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
114+
<tr><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a644d7ff0f19ca155a2e7d56b1cdb3a0b">parallel_for</a>(I beg, I end, C &amp;&amp;callable, size_t partitions=0)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
115+
<tr class="even"><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#acfce9d2800a097202bdd4047f205dacf">parallel_for</a>(I beg, I end, I step, C &amp;&amp;callable, size_t partitions=0)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
116116
<tr><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#acab0b4ac82260f47fdb36a3244ee3aaf">placeholder</a>()</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
117117
<tr class="even"><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#af7c4a5d732d49bd63d554a92cd240f3f">precede</a>(Task A, Task B)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
118118
<tr><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a06b06b57f8ec8bb060951fc71dd375fb">reduce</a>(I beg, I end, T &amp;result, B &amp;&amp;bop)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>

0 commit comments

Comments
 (0)