| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -14,13 +14,13 @@ void build_framework(LevelGraph& graph, tf::Framework& framework) { | |||
| 14 | 14 | ||
| 15 | 15 | for(size_t i=0; i<graph.length(); i++){ | |
| 16 | 16 | 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(); }); | ||
| 18 | 18 | } | |
| 19 | 19 | ||
| 20 | 20 | for(int l=graph.level()-2; l>=0 ; l--){ | |
| 21 | 21 | for(size_t i=0; i<graph.length(); i++){ | |
| 22 | 22 | Node& n = graph.node_at(l, i); | |
| 23 | - tasks[l][i] = framework.silent_emplace([&](){ n.mark();}); | ||
| 23 | + tasks[l][i] = framework.emplace([&](){ n.mark();}); | ||
| 24 | 24 | for(size_t k=0; k<n._out_edges.size(); k++){ | |
| 25 | 25 | tasks[l][i].precede(tasks[l+1][n._out_edges[k]]); | |
| 26 | 26 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -15,13 +15,13 @@ struct TF { | |||
| 15 | 15 | ||
| 16 | 16 | for(size_t i=0; i<graph.length(); i++){ | |
| 17 | 17 | 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(); }); | ||
| 19 | 19 | } | |
| 20 | 20 | ||
| 21 | 21 | for(int l=graph.level()-2; l>=0 ; l--){ | |
| 22 | 22 | for(size_t i=0; i<graph.length(); i++){ | |
| 23 | 23 | Node& n = graph.node_at(l, i); | |
| 24 | - tasks[l][i] = tf.silent_emplace([&](){ n.mark();}); | ||
| 24 | + tasks[l][i] = tf.emplace([&](){ n.mark();}); | ||
| 25 | 25 | for(size_t k=0; k<n._out_edges.size(); k++){ | |
| 26 | 26 | tasks[l][i].precede(tasks[l+1][n._out_edges[k]]); | |
| 27 | 27 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -22,7 +22,7 @@ void run_taskflow(MNIST& D, unsigned num_threads) { | |||
| 22 | 22 | ||
| 23 | 23 | for(auto e=0u; e<D.epoch; e++) { | |
| 24 | 24 | 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( | ||
| 26 | 26 | [&, i=i, e=e%num_par_shf]() { forward_task(D, i, e, mats, vecs); } | |
| 27 | 27 | )); | |
| 28 | 28 | ||
@@ -35,13 +35,13 @@ void run_taskflow(MNIST& D, unsigned num_threads) { | |||
| 35 | 35 | ||
| 36 | 36 | for(int j=D.acts.size()-1; j>=0; j--) { | |
| 37 | 37 | // backward propagation | |
| 38 | - auto& b_task = backward_tasks.emplace_back(tf.silent_emplace( | ||
| 38 | + auto& b_task = backward_tasks.emplace_back(tf.emplace( | ||
| 39 | 39 | [&, i=j, e=e%num_par_shf] () { backward_task(D, i, e, mats); } | |
| 40 | 40 | )); | |
| 41 | 41 | ||
| 42 | 42 | // update weight | |
| 43 | 43 | auto& u_task = update_tasks.emplace_back( | |
| 44 | - tf.silent_emplace([&, i=j] () {D.update(i);}) | ||
| 44 | + tf.emplace([&, i=j] () {D.update(i);}) | ||
| 45 | 45 | ); | |
| 46 | 46 | ||
| 47 | 47 | if(j + 1u == D.acts.size()) { | |
@@ -57,11 +57,11 @@ void run_taskflow(MNIST& D, unsigned num_threads) { | |||
| 57 | 57 | ||
| 58 | 58 | if(e == 0) { | |
| 59 | 59 | // No need to shuffle in first epoch | |
| 60 | - shuffle_tasks.emplace_back(tf.silent_emplace([](){})) | ||
| 60 | + shuffle_tasks.emplace_back(tf.emplace([](){})) | ||
| 61 | 61 | .precede(forward_tasks[forward_tasks.size()-iter_num]); | |
| 62 | 62 | } | |
| 63 | 63 | else { | |
| 64 | - auto& t = shuffle_tasks.emplace_back(tf.silent_emplace( | ||
| 64 | + auto& t = shuffle_tasks.emplace_back(tf.emplace( | ||
| 65 | 65 | [&, e=e%num_par_shf]() { D.shuffle(mats[e], vecs[e], D.images.rows());} | |
| 66 | 66 | )); | |
| 67 | 67 | t.precede(forward_tasks[forward_tasks.size()-iter_num]); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -7,7 +7,7 @@ int main(){ | |||
| 7 | 7 | ||
| 8 | 8 | tf::Taskflow tf; | |
| 9 | 9 | ||
| 10 | - auto [A, B, C, D, E] = tf.silent_emplace( | ||
| 10 | + auto [A, B, C, D, E] = tf.emplace( | ||
| 11 | 11 | [] () { std::cout << "Task A" << std::endl; }, | |
| 12 | 12 | [] () { std::cout << "Task B" << std::endl; }, | |
| 13 | 13 | [] () { std::cout << "Task C" << std::endl; }, | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -21,7 +21,7 @@ int main() { | |||
| 21 | 21 | ||
| 22 | 22 | // Insert tasks with sleeping for random ms and increasing the counter | |
| 23 | 23 | for(size_t i=0; i<num_jobs; ++i){ | |
| 24 | - tf.silent_emplace([t=dice(gen), &counter](){ | ||
| 24 | + tf.emplace([t=dice(gen), &counter](){ | ||
| 25 | 25 | std::this_thread::sleep_for(std::chrono::microseconds(t)); | |
| 26 | 26 | counter++; | |
| 27 | 27 | }); | |
@@ -37,7 +37,7 @@ int main() { | |||
| 37 | 37 | ||
| 38 | 38 | // Insert tasks with sleeping for random ms and decreasing the counter | |
| 39 | 39 | for(size_t i=0; i<num_jobs; ++i){ | |
| 40 | - tf.silent_emplace([t=dice(gen), &counter](){ | ||
| 40 | + tf.emplace([t=dice(gen), &counter](){ | ||
| 41 | 41 | std::this_thread::sleep_for(std::chrono::microseconds(t)); | |
| 42 | 42 | counter--; | |
| 43 | 43 | }); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -29,7 +29,7 @@ void traverse(Node* n, tf::SubflowBuilder& subflow) { | |||
| 29 | 29 | for(size_t i=0; i<n->successors.size(); i++) { | |
| 30 | 30 | if(--(n->successors[i]->dependents) == 0) { | |
| 31 | 31 | 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); }); | ||
| 33 | 33 | } | |
| 34 | 34 | } | |
| 35 | 35 | } | |
@@ -57,7 +57,7 @@ void tf_traversal(std::vector<Node*>& src) { | |||
| 57 | 57 | ||
| 58 | 58 | tf::Taskflow tf(4); | |
| 59 | 59 | 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); }); | ||
| 61 | 61 | } | |
| 62 | 62 | tf.wait_for_all(); // block until finished | |
| 63 | 63 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,5 +1,5 @@ | |||
| 1 | 1 | // This example shows how to create task using either 'emplace' | |
| 2 | - // or 'silent_emplace'. | ||
| 2 | + // or 'emplace'. | ||
| 3 | 3 | ||
| 4 | 4 | #include <cassert> | |
| 5 | 5 | #include <taskflow/taskflow.hpp> | |
@@ -11,17 +11,18 @@ int main(){ | |||
| 11 | 11 | // The method emplace gives you a future to retrieve the result. | |
| 12 | 12 | // You may pass this future to another thread or program context | |
| 13 | 13 | // to enable more asynchronous control flows. | |
| 14 | - auto [A, fuA] = tf.emplace([] () { | ||
| 14 | + //auto [A, fuA] = tf.emplace([] () { | ||
| 15 | + auto A = tf.emplace([] () { | ||
| 15 | 16 | std::cout << "Task A\n"; | |
| 16 | - return 1; | ||
| 17 | + //return 1; | ||
| 17 | 18 | }); | |
| 18 | 19 | ||
| 19 | 20 | A.name("A"); | |
| 20 | 21 | ||
| 21 | - // The method silent_emplace won't give you a future. | ||
| 22 | + // The method emplace won't give you a future. | ||
| 22 | 23 | // 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([] () { | ||
| 25 | 26 | std::cout << "Task B\n"; | |
| 26 | 27 | return "no one can get me"; | |
| 27 | 28 | }); | |
@@ -31,7 +32,7 @@ int main(){ | |||
| 31 | 32 | // The future of A won't be ready until you execute the taskflow. | |
| 32 | 33 | tf.wait_for_all(); | |
| 33 | 34 | ||
| 34 | - assert(fuA.get() == 1); | ||
| 35 | + //assert(fuA.get() == 1); | ||
| 35 | 36 | ||
| 36 | 37 | return 0; | |
| 37 | 38 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -50,7 +50,7 @@ void matrix_multiplication() { | |||
| 50 | 50 | // Procedure | |
| 51 | 51 | void create_task_dependency_graph(tf::Taskflow& tf) { | |
| 52 | 52 | 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( | ||
| 54 | 54 | [&] () { matrix_multiplication(); }, | |
| 55 | 55 | [&] () { matrix_multiplication(); }, | |
| 56 | 56 | [&] () { matrix_multiplication(); }, | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -9,17 +9,17 @@ int main(){ | |||
| 9 | 9 | ||
| 10 | 10 | // Create a framework | |
| 11 | 11 | 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){ | ||
| 14 | 14 | 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"); | ||
| 18 | 18 | B1.precede(B3); | |
| 19 | 19 | B2.precede(B3); | |
| 20 | 20 | }).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"); | ||
| 23 | 23 | ||
| 24 | 24 | A.precede(B, C); | |
| 25 | 25 | B.precede(D); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -46,7 +46,7 @@ void traverse(Node* n, tf::SubflowBuilder& subflow) { | |||
| 46 | 46 | for(size_t i=0; i<n->successors.size(); i++) { | |
| 47 | 47 | if(--(n->successors[i]->dependents) == 0) { | |
| 48 | 48 | 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); }); | ||
| 50 | 50 | } | |
| 51 | 51 | } | |
| 52 | 52 | } | |
@@ -83,12 +83,12 @@ void tf_traversal(std::vector<Node*>& src, Node nodes[], size_t num_nodes) { | |||
| 83 | 83 | tf::Taskflow tf(4); | |
| 84 | 84 | tf::Framework framework; | |
| 85 | 85 | // Add a target to verify the traversal and reset nodes in each iteration | |
| 86 | - auto target = framework.silent_emplace([&](){ | ||
| 86 | + auto target = framework.emplace([&](){ | ||
| 87 | 87 | validate(nodes, num_nodes); | |
| 88 | 88 | reset(nodes, num_nodes); | |
| 89 | 89 | }); | |
| 90 | 90 | 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); | ||
| 92 | 92 | } | |
| 93 | 93 | tf.run_n(framework, 100); | |
| 94 | 94 | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments