barretenberg
Loading...
Searching...
No Matches
iterate_over_domain.hpp
1#pragma once
2
3#if 0
4#include <thread>
5#define ITERATE_OVER_DOMAIN_START(domain) \
6 { \
7 const size_t __num_threads = domain.num_threads; \
8 const size_t __thread_size = domain.thread_size; \
9 std::vector<std::thread> threads(__num_threads); \
10 auto parallel_loop = [&](size_t __start, size_t __end) { \
11 for (size_t i = __start; i < __end; ++i) \
12 {
13
14#define ITERATE_OVER_DOMAIN_END \
15 } \
16 } \
17 ; \
18 for (size_t j = 0; j < __num_threads; ++j) { \
19 const size_t _start = j * __thread_size; \
20 const size_t _end = (j + 1) * __thread_size; \
21 threads[j] = std::thread(parallel_loop, _start, _end); \
22 } \
23 for (size_t j = 0; j < __num_threads; ++j) { \
24 threads[j].join(); \
25 } \
26 }
27#endif
28
29// TODO: Evil preprocessor! Can we not just leverage lambdas?
30#if 1
31#include <barretenberg/common/thread.hpp>
32#define ITERATE_OVER_DOMAIN_START(domain) \
33 parallel_for(domain.num_threads, [&](size_t j) { \
34 const size_t internal_bound_start = j * domain.thread_size; \
35 const size_t internal_bound_end = (j + 1) * domain.thread_size; \
36 for (size_t i = internal_bound_start; i < internal_bound_end; ++i) {
37
38#define ITERATE_OVER_DOMAIN_END \
39 } \
40 });
41#endif