Skip to content

Commit d41548e

Browse files
committed
Remove silent_emplace.
1 parent 4892558 commit d41548e

18 files changed

Lines changed: 364 additions & 313 deletions

benchmark/framework/taskflow.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ void build_framework(LevelGraph& graph, tf::Framework& framework) {
1414

1515
for(size_t i=0; i<graph.length(); i++){
1616
Node& n = graph.node_at(graph.level()-1, i);
17-
tasks[graph.level()-1][i] = framework.silent_emplace([&](){ n.mark(); });
17+
tasks[graph.level()-1][i] = framework.emplace([&](){ n.mark(); });
1818
}
1919

2020
for(int l=graph.level()-2; l>=0 ; l--){
2121
for(size_t i=0; i<graph.length(); i++){
2222
Node& n = graph.node_at(l, i);
23-
tasks[l][i] = framework.silent_emplace([&](){ n.mark();});
23+
tasks[l][i] = framework.emplace([&](){ n.mark();});
2424
for(size_t k=0; k<n._out_edges.size(); k++){
2525
tasks[l][i].precede(tasks[l+1][n._out_edges[k]]);
2626
}

benchmark/graph_traversal/taskflow.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ struct TF {
1515

1616
for(size_t i=0; i<graph.length(); i++){
1717
Node& n = graph.node_at(graph.level()-1, i);
18-
tasks[graph.level()-1][i] = tf.silent_emplace([&](){ n.mark(); });
18+
tasks[graph.level()-1][i] = tf.emplace([&](){ n.mark(); });
1919
}
2020

2121
for(int l=graph.level()-2; l>=0 ; l--){
2222
for(size_t i=0; i<graph.length(); i++){
2323
Node& n = graph.node_at(l, i);
24-
tasks[l][i] = tf.silent_emplace([&](){ n.mark();});
24+
tasks[l][i] = tf.emplace([&](){ n.mark();});
2525
for(size_t k=0; k<n._out_edges.size(); k++){
2626
tasks[l][i].precede(tasks[l+1][n._out_edges[k]]);
2727
}

benchmark/mnist/taskflow.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ void run_taskflow(MNIST& D, unsigned num_threads) {
2222

2323
for(auto e=0u; e<D.epoch; e++) {
2424
for(auto i=0u; i<iter_num; i++) {
25-
auto& f_task = forward_tasks.emplace_back(tf.silent_emplace(
25+
auto& f_task = forward_tasks.emplace_back(tf.emplace(
2626
[&, i=i, e=e%num_par_shf]() { forward_task(D, i, e, mats, vecs); }
2727
));
2828

@@ -35,13 +35,13 @@ void run_taskflow(MNIST& D, unsigned num_threads) {
3535

3636
for(int j=D.acts.size()-1; j>=0; j--) {
3737
// backward propagation
38-
auto& b_task = backward_tasks.emplace_back(tf.silent_emplace(
38+
auto& b_task = backward_tasks.emplace_back(tf.emplace(
3939
[&, i=j, e=e%num_par_shf] () { backward_task(D, i, e, mats); }
4040
));
4141

4242
// update weight
4343
auto& u_task = update_tasks.emplace_back(
44-
tf.silent_emplace([&, i=j] () {D.update(i);})
44+
tf.emplace([&, i=j] () {D.update(i);})
4545
);
4646

4747
if(j + 1u == D.acts.size()) {
@@ -57,11 +57,11 @@ void run_taskflow(MNIST& D, unsigned num_threads) {
5757

5858
if(e == 0) {
5959
// No need to shuffle in first epoch
60-
shuffle_tasks.emplace_back(tf.silent_emplace([](){}))
60+
shuffle_tasks.emplace_back(tf.emplace([](){}))
6161
.precede(forward_tasks[forward_tasks.size()-iter_num]);
6262
}
6363
else {
64-
auto& t = shuffle_tasks.emplace_back(tf.silent_emplace(
64+
auto& t = shuffle_tasks.emplace_back(tf.emplace(
6565
[&, e=e%num_par_shf]() { D.shuffle(mats[e], vecs[e], D.images.rows());}
6666
));
6767
t.precede(forward_tasks[forward_tasks.size()-iter_num]);

example/debug.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ int main(){
77

88
tf::Taskflow tf;
99

10-
auto [A, B, C, D, E] = tf.silent_emplace(
10+
auto [A, B, C, D, E] = tf.emplace(
1111
[] () { std::cout << "Task A" << std::endl; },
1212
[] () { std::cout << "Task B" << std::endl; },
1313
[] () { std::cout << "Task C" << std::endl; },

example/dispatch.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ int main() {
2121

2222
// Insert tasks with sleeping for random ms and increasing the counter
2323
for(size_t i=0; i<num_jobs; ++i){
24-
tf.silent_emplace([t=dice(gen), &counter](){
24+
tf.emplace([t=dice(gen), &counter](){
2525
std::this_thread::sleep_for(std::chrono::microseconds(t));
2626
counter++;
2727
});
@@ -37,7 +37,7 @@ int main() {
3737

3838
// Insert tasks with sleeping for random ms and decreasing the counter
3939
for(size_t i=0; i<num_jobs; ++i){
40-
tf.silent_emplace([t=dice(gen), &counter](){
40+
tf.emplace([t=dice(gen), &counter](){
4141
std::this_thread::sleep_for(std::chrono::microseconds(t));
4242
counter--;
4343
});

example/dynamic_traversal.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ void traverse(Node* n, tf::SubflowBuilder& subflow) {
2929
for(size_t i=0; i<n->successors.size(); i++) {
3030
if(--(n->successors[i]->dependents) == 0) {
3131
n->successors[i]->level = n->level + 1;
32-
subflow.silent_emplace([s=n->successors[i]](tf::SubflowBuilder &subflow){ traverse(s, subflow); });
32+
subflow.emplace([s=n->successors[i]](tf::SubflowBuilder &subflow){ traverse(s, subflow); });
3333
}
3434
}
3535
}
@@ -57,7 +57,7 @@ void tf_traversal(std::vector<Node*>& src) {
5757

5858
tf::Taskflow tf(4);
5959
for(size_t i=0; i<src.size(); i++) {
60-
tf.silent_emplace([i=i, &src](auto& subflow){ traverse(src[i], subflow); });
60+
tf.emplace([i=i, &src](auto& subflow){ traverse(src[i], subflow); });
6161
}
6262
tf.wait_for_all(); // block until finished
6363

example/emplace.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// This example shows how to create task using either 'emplace'
2-
// or 'silent_emplace'.
2+
// or 'emplace'.
33

44
#include <cassert>
55
#include <taskflow/taskflow.hpp>
@@ -11,17 +11,18 @@ int main(){
1111
// The method emplace gives you a future to retrieve the result.
1212
// You may pass this future to another thread or program context
1313
// to enable more asynchronous control flows.
14-
auto [A, fuA] = tf.emplace([] () {
14+
//auto [A, fuA] = tf.emplace([] () {
15+
auto A = tf.emplace([] () {
1516
std::cout << "Task A\n";
16-
return 1;
17+
//return 1;
1718
});
1819

1920
A.name("A");
2021

21-
// The method silent_emplace won't give you a future.
22+
// The method emplace won't give you a future.
2223
// Therefore, you won't be able to get the return value of the callable.
23-
// Typically, silent_emplace is used for callables with no return values.
24-
auto B = tf.silent_emplace([] () {
24+
// Typically, emplace is used for callables with no return values.
25+
auto B = tf.emplace([] () {
2526
std::cout << "Task B\n";
2627
return "no one can get me";
2728
});
@@ -31,7 +32,7 @@ int main(){
3132
// The future of A won't be ready until you execute the taskflow.
3233
tf.wait_for_all();
3334

34-
assert(fuA.get() == 1);
35+
//assert(fuA.get() == 1);
3536

3637
return 0;
3738
}

example/executor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ void matrix_multiplication() {
5050
// Procedure
5151
void create_task_dependency_graph(tf::Taskflow& tf) {
5252
for(size_t i=0; i<MAX_COUNT; ++i) {
53-
auto [A, B, C, D] = tf.silent_emplace(
53+
auto [A, B, C, D] = tf.emplace(
5454
[&] () { matrix_multiplication(); },
5555
[&] () { matrix_multiplication(); },
5656
[&] () { matrix_multiplication(); },

example/framework.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,17 @@ int main(){
99

1010
// Create a framework
1111
tf::Framework f;
12-
auto A = f.silent_emplace([&](){ std::cout << "TaskA\n"; }).name("A");
13-
auto B = f.silent_emplace([&](auto& subflow){
12+
auto A = f.emplace([&](){ std::cout << "TaskA\n"; }).name("A");
13+
auto B = f.emplace([&](auto& subflow){
1414
std::cout << "TaskB\n";
15-
auto B1 = subflow.silent_emplace([&](){ std::cout << "TaskB1\n"; }).name("B1");
16-
auto B2 = subflow.silent_emplace([&](){ std::cout << "TaskB2\n"; }).name("B2");
17-
auto B3 = subflow.silent_emplace([&](){ std::cout << "TaskB3\n"; }).name("B3");
15+
auto B1 = subflow.emplace([&](){ std::cout << "TaskB1\n"; }).name("B1");
16+
auto B2 = subflow.emplace([&](){ std::cout << "TaskB2\n"; }).name("B2");
17+
auto B3 = subflow.emplace([&](){ std::cout << "TaskB3\n"; }).name("B3");
1818
B1.precede(B3);
1919
B2.precede(B3);
2020
}).name("B");
21-
auto C = f.silent_emplace([&](){ std::cout << "TaskC\n"; }).name("C");
22-
auto D = f.silent_emplace([&](){ std::cout << "TaskD\n"; }).name("D");
21+
auto C = f.emplace([&](){ std::cout << "TaskC\n"; }).name("C");
22+
auto D = f.emplace([&](){ std::cout << "TaskD\n"; }).name("D");
2323

2424
A.precede(B, C);
2525
B.precede(D);

example/framework_dynamic_tasking.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ void traverse(Node* n, tf::SubflowBuilder& subflow) {
4646
for(size_t i=0; i<n->successors.size(); i++) {
4747
if(--(n->successors[i]->dependents) == 0) {
4848
n->successors[i]->level = n->level + 1;
49-
subflow.silent_emplace([s=n->successors[i]](tf::SubflowBuilder &subflow){ traverse(s, subflow); });
49+
subflow.emplace([s=n->successors[i]](tf::SubflowBuilder &subflow){ traverse(s, subflow); });
5050
}
5151
}
5252
}
@@ -83,12 +83,12 @@ void tf_traversal(std::vector<Node*>& src, Node nodes[], size_t num_nodes) {
8383
tf::Taskflow tf(4);
8484
tf::Framework framework;
8585
// Add a target to verify the traversal and reset nodes in each iteration
86-
auto target = framework.silent_emplace([&](){
86+
auto target = framework.emplace([&](){
8787
validate(nodes, num_nodes);
8888
reset(nodes, num_nodes);
8989
});
9090
for(size_t i=0; i<src.size(); i++) {
91-
framework.silent_emplace([i=i, &src](auto& subflow){ traverse(src[i], subflow); }).precede(target);
91+
framework.emplace([i=i, &src](auto& subflow){ traverse(src[i], subflow); }).precede(target);
9292
}
9393
tf.run_n(framework, 100);
9494

0 commit comments

Comments
 (0)