FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

updated simple_threadpool2. · misback/cpp-taskflow@b93349f · GitHub

Commit b93349f

Browse files
updated simple_threadpool2.
1 parent d6fdc1c commit b93349f

4 files changed

Lines changed: 523 additions & 643 deletions

File tree

‎example/taskflow.cpp‎

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,25 @@
88
#include <random>
99
#include <climits>
1010

11-
using tf_simple_t = tf::BasicTaskflow<std::function, tf::SimpleThreadpool>;
12-
using tf_proactive_t = tf::BasicTaskflow<std::function, tf::ProactiveThreadpool>;
13-
using tf_speculative_t = tf::BasicTaskflow<std::function, tf::SpeculativeThreadpool>;
14-
using tf_privatized_t = tf::BasicTaskflow<std::function, tf::PrivatizedThreadpool>;
11+
using tf_simple_t = tf::BasicTaskflow<tf::SimpleThreadpool>;
12+
using tf_proactive_t = tf::BasicTaskflow<tf::ProactiveThreadpool>;
13+
using tf_speculative_t = tf::BasicTaskflow<tf::SpeculativeThreadpool>;
14+
using tf_privatized_t = tf::BasicTaskflow<tf::PrivatizedThreadpool>;
1515

1616
// Procedure: benchmark
1717
#define BENCHMARK(TITLE, F) \
1818
std::cout << "========== " << TITLE << " ==========\n"; \
1919
\
20-
std::cout << "Taskflow [simple + std::func] elapsed time: " \
20+
std::cout << "Taskflow [simple ] elapsed time: " \
2121
<< F<tf_simple_t>() << " ms\n"; \
2222
\
23-
std::cout << "Taskflow [proactive + std::func] elapsed time: " \
23+
std::cout << "Taskflow [proactive ] elapsed time: " \
2424
<< F<tf_proactive_t>() << " ms\n"; \
2525
\
26-
std::cout << "Taskflow [speculative + std::func] elapsed time: " \
26+
std::cout << "Taskflow [speculative] elapsed time: " \
2727
<< F<tf_speculative_t>() << " ms\n"; \
2828
\
29-
std::cout << "Taskflow [privatized + std::func] elapsed time: " \
29+
std::cout << "Taskflow [privatized ] elapsed time: " \
3030
<< F<tf_privatized_t>() << " ms\n"; \
3131

3232
// ============================================================================
@@ -97,7 +97,7 @@ auto map_reduce() {
9797

9898
T tf;
9999

100-
std::optional<typename T::Task> prev;
100+
std::optional<tf::Task> prev;
101101

102102
for(int i=0; i<num_batches; ++i) {
103103

@@ -138,7 +138,7 @@ auto level_graph() {
138138

139139
T tf;
140140

141-
std::vector< std::vector<typename T::Task> > tasks;
141+
std::vector< std::vector<tf::Task> > tasks;
142142

143143
tasks.resize(num_levels);
144144
for(int l=0; l<num_levels; ++l) {
@@ -183,7 +183,7 @@ auto linear_graph() {
183183

184184
T tf;
185185

186-
std::vector<typename T::Task> tasks;
186+
std::vector<tf::Task> tasks;
187187

188188
for(int i=0; i<num_nodes; ++i) {
189189
tasks.push_back(tf.silent_emplace([&] () { ++sum; }));
@@ -214,9 +214,9 @@ auto binary_tree() {
214214
T tf;
215215

216216
std::atomic<size_t> sum {0};
217-
std::function<void(int, typename T::Task)> insert;
217+
std::function<void(int, tf::Task)> insert;
218218

219-
insert = [&] (int l, typename T::Task parent) {
219+
insert = [&] (int l, tf::Task parent) {
220220

221221
if(l < num_levels) {
222222

‎example/threadpool.cpp‎

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,15 +316,52 @@ auto atomic_add() {
316316

317317
// ----------------------------------------------------------------------------
318318

319+
struct Work {
320+
321+
Work() {
322+
}
323+
324+
Work(std::atomic<int>& in) : ptr {&in} {
325+
}
326+
327+
std::atomic<int>* ptr {nullptr};
328+
329+
void operator () () {
330+
ptr->fetch_add(1, std::memory_order_relaxed);
331+
}
332+
};
333+
334+
void test_work() {
335+
336+
const int num_threads = std::thread::hardware_concurrency();
337+
const int num_tasks = 1000000;
338+
339+
std::atomic<int> counter(0);
340+
auto beg = std::chrono::high_resolution_clock::now();
341+
342+
tf::SimpleThreadpool2<Work> threadpool(num_threads);
343+
for(size_t i=0; i<num_tasks; i++){
344+
threadpool.emplace(counter);
345+
}
346+
347+
auto end = std::chrono::high_resolution_clock::now();
348+
std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(end - beg).count()
349+
<< " ms... " << counter << '\n';
350+
}
351+
319352
// Function: main
320353
int main(int argc, char* argv[]) {
321354

355+
test_work();
356+
322357
BENCHMARK("Atomic Add", atomic_add);
323358
BENCHMARK("Empty Jobs", empty_jobs);
324359
BENCHMARK("Linear Insertions", linear_insertions);
325360
BENCHMARK("Modulo Insertions", modulo_insertions);
326361
BENCHMARK("Binary Tree", binary_tree);
327362
BENCHMARK("Divide and Conquer", subsum);
363+
364+
328365

329366
return 0;
330367
}

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL