Skip to content

Commit 5644343

Browse files
renamed parallel-for to for-each
1 parent f5ded72 commit 5644343

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+834
-2066
lines changed

README.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -483,26 +483,27 @@ A.precede(B);
483483
B.work([](){ /* do something */ });
484484
```
485485

486-
### *parallel_for*
486+
### *for_each/for_each_index*
487487

488-
The method `parallel_for` creates a dynamic task that spawns a subflow to apply the callable to each item in the given range of a container.
488+
The method `for_each` creates a subflow to perform parallel iterations over a range of elements
489+
specified by `[beg, end)`.
489490

490491
```cpp
491492
auto v = {'A', 'B', 'C', 'D'};
492-
auto t = taskflow.parallel_for(v.begin(), v.end(),
493-
[] (int i) {
494-
std::cout << "parallel " << i << '\n';
493+
auto t = taskflow.for_each(v.begin(), v.end(),
494+
[] (char i) {
495+
std::cout << "parallel iteration on character " << i << '\n';
495496
}
496497
);
497498
```
498499
499-
You can also specify an *index-based* range with the given step size to perform parallel iterations.
500+
You can also specify an *index-based* range with the given step size.
500501
501502
```cpp
502503
// [0, 11) with a step size of 2, i.e., 0, 2, 4, 6, 8, 10
503-
auto t = taskflow.parallel_for(0, 11, 2,
504+
auto t = taskflow.for_each_index(0, 11, 2,
504505
[] (int i) {
505-
std::cout << "parallel_for on index " << i << std::endl;
506+
std::cout << "parallel iteration on index " << i << std::endl;
506507
}
507508
);
508509
```

benchmarks/black_scholes/taskflow.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ void bs_taskflow(unsigned num_threads) {
77
tf::Executor executor(num_threads);
88
tf::Taskflow taskflow;
99

10-
taskflow.parallel_index(0, numOptions, 1, [&](int i) {
10+
taskflow.for_each_index(0, numOptions, 1, [&](int i) {
1111
auto price = BlkSchlsEqEuroNoDiv(
1212
sptprice[i], strike[i],
1313
rate[i], volatility[i], otime[i],

benchmarks/mandelbrot/taskflow.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ void mandelbrot_taskflow(unsigned num_threads, int d = D) {
66
tf::Executor executor {num_threads};
77
tf::Taskflow taskflow;
88

9-
taskflow.parallel_index(0, H, 1, [&](int i){
9+
taskflow.for_each_index(0, H, 1, [&](int i){
1010
for(int j=0; j<W; j++) {
1111
auto xy = scale_xy(i, j);
1212
auto value = escape_time(xy.first, xy.second, d);

benchmarks/matrix_multiplication/taskflow.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,25 @@ void matrix_multiplication_taskflow(unsigned num_threads) {
77
tf::Executor executor(num_threads);
88
tf::Taskflow taskflow;
99

10-
auto init_a = taskflow.parallel_index(0, N, 1, [&] (int i) {
10+
auto init_a = taskflow.for_each_index(0, N, 1, [&] (int i) {
1111
for(int j=0; j<N; ++j) {
1212
a[i][j] = i + j;
1313
}
1414
});
1515

16-
auto init_b = taskflow.parallel_index(0, N, 1, [&] (int i) {
16+
auto init_b = taskflow.for_each_index(0, N, 1, [&] (int i) {
1717
for(int j=0; j<N; ++j) {
1818
b[i][j] = i * j;
1919
}
2020
});
2121

22-
auto init_c = taskflow.parallel_index(0, N, 1, [&] (int i) {
22+
auto init_c = taskflow.for_each_index(0, N, 1, [&] (int i) {
2323
for(int j=0; j<N; ++j) {
2424
c[i][j] = 0;
2525
}
2626
});
2727

28-
auto comp_c = taskflow.parallel_index(0, N, 1, [&] (int i) {
28+
auto comp_c = taskflow.for_each_index(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];

docs/A0ParallelFor.html

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

docs/Algorithms.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@
9393
</div><!--header-->
9494
<div class="contents">
9595
<div class="textblock"><p>Taskflow defines a collection of algorithm functions especially designed to be used on ranges of elements.</p>
96-
<p><a class="el" href="A0ParallelFor.html">A0: Parallel For</a> <br />
96+
<p><a class="el" href="A0ParallelFor.html">A0: Parallel Iterations</a> <br />
9797
</p>
9898
</div></div><!-- contents -->
9999
</div><!-- doc-content -->

docs/Algorithms.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
var Algorithms =
22
[
3-
[ "A0: Parallel For", "A0ParallelFor.html", [
4-
[ "Index-based Parallel-For", "A0ParallelFor.html#IndexBasedParallelFor", null ],
5-
[ "Iterator-based Parallel-For", "A0ParallelFor.html#IteratorBasedParallelFor", null ],
3+
[ "A0: Parallel Iterations", "A0ParallelFor.html", [
4+
[ "Index-based Parallel Iterations", "A0ParallelFor.html#IndexBasedParallelFor", null ],
5+
[ "Iterator-based Parallel Iterations", "A0ParallelFor.html#IteratorBasedParallelFor", null ],
66
[ "Partition Algorithms", "A0ParallelFor.html#PartitionAlgorithms", null ]
77
] ]
88
];

docs/classtf_1_1FlowBuilder-members.html

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -106,22 +106,22 @@
106106
<tr class="even"><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a1f6118326ad434f6c839007a1a79fe1b">emplace</a>(C &amp;&amp;... callables)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
107107
<tr bgcolor="#f0f0f0"><td class="entry"><b>Executor</b> (defined in <a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a>)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
108108
<tr class="even"><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a67d023d5493da1594a1d2eaea89da179">FlowBuilder</a>(Graph &amp;graph)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
109+
<tr><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a564252001be679600b20ca9ed9920f6a">for_each</a>(B &amp;&amp;first, E &amp;&amp;last, C &amp;&amp;callable)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
110+
<tr class="even"><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a71a52fc60e059fb4d8ccd5b6700cdb8d">for_each_dynamic</a>(B &amp;&amp;beg, E &amp;&amp;end, C &amp;&amp;callable, H &amp;&amp;chunk_size)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
111+
<tr><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#ab8fbe897d6f71a4c308e4b96b741b452">for_each_guided</a>(B &amp;&amp;beg, E &amp;&amp;end, C &amp;&amp;callable, H &amp;&amp;chunk_size)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
112+
<tr class="even"><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#ab8417b211b18bb1e0f45a049331f084d">for_each_index</a>(B &amp;&amp;first, E &amp;&amp;last, S &amp;&amp;step, C &amp;&amp;callable)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
113+
<tr><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a930d0343226874d1d40b9e230cccdd52">for_each_index_dynamic</a>(B &amp;&amp;beg, E &amp;&amp;end, S &amp;&amp;step, C &amp;&amp;callable, H &amp;&amp;chunk_size=1)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
114+
<tr class="even"><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a942449afd25e656b9e14cb526cbd8ad2">for_each_index_guided</a>(B &amp;&amp;beg, E &amp;&amp;end, S &amp;&amp;step, C &amp;&amp;callable, H &amp;&amp;chunk_size=1)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
115+
<tr><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a71f204c670ca5857e5527d6000ba73c4">for_each_index_static</a>(B &amp;&amp;beg, E &amp;&amp;end, S &amp;&amp;step, C &amp;&amp;callable, H &amp;&amp;chunk_size=0)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
116+
<tr class="even"><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a90340f21321d0addc4f4215c8ea3252e">for_each_static</a>(B &amp;&amp;beg, E &amp;&amp;end, C &amp;&amp;callable, H &amp;&amp;chunk_size)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
109117
<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>
110118
<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>
111-
<tr><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a97adfbc7bbf0f1e234bc90657fdb5fd7">parallel_for</a>(B &amp;&amp;first, E &amp;&amp;last, C &amp;&amp;callable)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
112-
<tr class="even"><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#aec1bde5c3a6e6850c539f889763a0092">parallel_for_dynamic</a>(B &amp;&amp;beg, E &amp;&amp;end, C &amp;&amp;callable, H &amp;&amp;chunk_size)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
113-
<tr><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a220cc51aaa9c977f4af7a39831d573e1">parallel_for_guided</a>(B &amp;&amp;beg, E &amp;&amp;end, C &amp;&amp;callable, H &amp;&amp;chunk_size)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
114-
<tr class="even"><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a18a4eacf36abb3f3e7bb0250a25d8b47">parallel_for_static</a>(B &amp;&amp;beg, E &amp;&amp;end, C &amp;&amp;callable, H &amp;&amp;chunk_size)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
115-
<tr><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#ac74d9ff356965b457b0742636bd8c8b7">parallel_index</a>(B &amp;&amp;first, E &amp;&amp;last, S &amp;&amp;step, C &amp;&amp;callable)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
116-
<tr class="even"><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a494dedbf29f61cde52c10c6ae53ece9e">parallel_index_dynamic</a>(B &amp;&amp;beg, E &amp;&amp;end, S &amp;&amp;step, C &amp;&amp;callable, H &amp;&amp;chunk_size=1)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
117-
<tr><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a1e1f7468344d97791606fea5233f90a3">parallel_index_guided</a>(B &amp;&amp;beg, E &amp;&amp;end, S &amp;&amp;step, C &amp;&amp;callable, H &amp;&amp;chunk_size=1)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
118-
<tr class="even"><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a1ace46854e639da16ffdfce96d32375e">parallel_index_static</a>(B &amp;&amp;beg, E &amp;&amp;end, S &amp;&amp;step, C &amp;&amp;callable, H &amp;&amp;chunk_size=0)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
119-
<tr><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#ac23d87e95c97b510feff4f0745ee4793">parallel_reduce</a>(B &amp;&amp;first, E &amp;&amp;last, T &amp;init, O &amp;&amp;bop)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
120-
<tr class="even"><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a0ddd9534960b0b0041a2f24805dec0d7">parallel_reduce_dynamic</a>(B &amp;&amp;first, E &amp;&amp;last, T &amp;init, O &amp;&amp;bop, H &amp;&amp;chunk_size=1)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
121-
<tr><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a4caa7674a66e110c80ae6cd8b0fd6ae2">parallel_reduce_guided</a>(B &amp;&amp;first, E &amp;&amp;last, T &amp;init, O &amp;&amp;bop, H &amp;&amp;chunk_size=1)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
122-
<tr class="even"><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#acec17003913245aa552665c393387683">parallel_reduce_static</a>(B &amp;&amp;first, E &amp;&amp;last, T &amp;init, O &amp;&amp;bop, H &amp;&amp;chunk_size=0)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
123119
<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>
124120
<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>
121+
<tr><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#ad999cd75045db225a42d5881d6db1223">reduce</a>(B &amp;&amp;first, E &amp;&amp;last, T &amp;init, O &amp;&amp;bop)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
122+
<tr class="even"><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a83ec799606b7526787761acf27885b00">reduce_dynamic</a>(B &amp;&amp;first, E &amp;&amp;last, T &amp;init, O &amp;&amp;bop, H &amp;&amp;chunk_size=1)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
123+
<tr><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a10f13b39b02038c6850aca787923d668">reduce_guided</a>(B &amp;&amp;first, E &amp;&amp;last, T &amp;init, O &amp;&amp;bop, H &amp;&amp;chunk_size=1)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
124+
<tr class="even"><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a54e36c916ae7dd88bd079d3fd49119f9">reduce_static</a>(B &amp;&amp;first, E &amp;&amp;last, T &amp;init, O &amp;&amp;bop, H &amp;&amp;chunk_size=0)</td><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td><td class="entry"></td></tr>
125125
<tr><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a963e239f17485d0e05a2477f0732df09">succeed</a>(std::vector&lt; Task &gt; &amp;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>
126126
<tr class="even"><td class="entry"><a class="el" href="classtf_1_1FlowBuilder.html#a53927b2b4198b29568f20c43d21ad526">succeed</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>
127127
</table></div><!-- contents -->

0 commit comments

Comments
 (0)