File tree Expand file tree Collapse file tree
benchmark/matrix_multiplication Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -7,48 +7,41 @@ void matrix_multiplication_taskflow(unsigned num_threads) {
77 tf::Executor executor (num_threads);
88 tf::Taskflow taskflow;
99
10- std::vector<tf::Task> tasks;
11- tasks.reserve (4 *N);
1210 auto sync = taskflow.emplace ([](){});
1311
1412 for (int i=0 ; i<N; ++i) {
15- tasks[i] = taskflow.emplace ([&, i=i](){
13+ taskflow.emplace ([&, i=i](){
1614 for (int j=0 ; j<N; ++j) {
1715 a[i][j] = i + j;
1816 }
19- });
20- tasks[i].precede (sync);
17+ }).precede (sync);
2118 }
2219
2320 for (int i=0 ; i<N; ++i) {
24- tasks[i+N] = taskflow.emplace ([&, i=i](){
21+ taskflow.emplace ([&, i=i](){
2522 for (int j=0 ; j<N; ++j) {
2623 b[i][j] = i * j;
2724 }
28- });
29- tasks[i+N].precede (sync);
25+ }).precede (sync);
3026 }
31- tasks.clear ();
3227
3328 for (int i=0 ; i<N; ++i) {
34- tasks[i+ 2 *N] = taskflow.emplace ([&, i=i](){
29+ taskflow.emplace ([&, i=i](){
3530 for (int j=0 ; j<N; ++j) {
3631 c[i][j] = 0 ;;
3732 }
38- });
39- tasks[i+2 *N].precede (sync);
33+ }).precede (sync);
4034 }
41- tasks.clear ();
4235
4336 for (int i=0 ; i<N; ++i) {
44- tasks[i+ 3 *N] = taskflow.emplace ([&, i=i](){
37+ auto t = taskflow.emplace ([&, i=i](){
4538 for (int j=0 ; j<N; ++j) {
4639 for (int k=0 ; k<N; k++) {
4740 c[i][j] += a[i][k] * b[k][j];
4841 }
4942 }
5043 });
51- sync.precede (tasks[i+ 3 *N] );
44+ sync.precede (t );
5245 }
5346
5447 executor.run (taskflow).get ();
You can’t perform that action at this time.
0 commit comments