4#include <gtest/gtest.h>
30 constexpr size_t num_iterations = 100;
33 parallel_for(num_iterations, [&](
size_t i) { flags[i] = 1; });
36 for (
size_t i = 0; i < num_iterations; ++i) {
37 EXPECT_TRUE(flags[i]);
71 EXPECT_EQ(counter, 0);
84 EXPECT_EQ(counter, 1);
90 constexpr size_t num_points = 100;
94 for (
size_t i = start; i < end; ++i) {
100 for (
size_t i = 0; i < num_points; ++i) {
101 EXPECT_TRUE(flags[i]);
108 constexpr size_t num_points = 10;
111 std::atomic<size_t> call_count{ 0 };
116 [&](
size_t start,
size_t end) {
118 for (
size_t i = start; i < end; ++i) {
125 for (
size_t i = 0; i < num_points; ++i) {
126 EXPECT_TRUE(flags[i]);
130 EXPECT_EQ(call_count, 1);
154 constexpr size_t num_outer = 2;
155 constexpr size_t num_inner = 100;
158 auto worker = [&](
size_t outer_idx) {
160 parallel_for(num_inner, [&](
size_t inner_idx) { results[outer_idx][inner_idx] = 1; });
163 std::vector<std::thread> threads;
164 for (
size_t i = 0; i < num_outer; ++i) {
165 threads.emplace_back(worker, i);
167 for (
auto& t : threads) {
172 for (
size_t i = 0; i < num_outer; ++i) {
173 for (
size_t j = 0; j < num_inner; ++j) {
174 EXPECT_TRUE(results[i][j]);
size_t original_concurrency
Entry point for Barretenberg command-line interface.
TEST_F(IPATest, ChallengesAreZero)
size_t calculate_num_threads(size_t num_iterations, size_t min_iterations_per_thread)
calculates number of threads to create based on minimum iterations per thread
void set_parallel_for_concurrency(size_t num_cores)
void parallel_for(size_t num_iterations, const std::function< void(size_t)> &func)
void parallel_for_range(size_t num_points, const std::function< void(size_t, size_t)> &func, size_t no_multhreading_if_less_or_equal)
Split a loop into several loops running in parallel.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept