From 3b47f335c6792cb96b2f97cf1f24cdf91e2b59bf Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 23 Apr 2020 15:15:05 +0200 Subject: BLI: remove TaskParallelRangePool This is not currently used and will take some work to support with TBB, so remove it until we have a new implementation based on TBB. Fixes T76005, parallel range pool tests failing. Ref D7475 --- tests/gtests/blenlib/BLI_task_performance_test.cc | 86 ----------------------- tests/gtests/blenlib/BLI_task_test.cc | 74 ------------------- 2 files changed, 160 deletions(-) (limited to 'tests/gtests') diff --git a/tests/gtests/blenlib/BLI_task_performance_test.cc b/tests/gtests/blenlib/BLI_task_performance_test.cc index db596340464..06e832bdb5e 100644 --- a/tests/gtests/blenlib/BLI_task_performance_test.cc +++ b/tests/gtests/blenlib/BLI_task_performance_test.cc @@ -36,92 +36,6 @@ static uint gen_pseudo_random_number(uint num) return ((num & 255) << 6) + 1; } -/* *** Parallel iterations over range of indices. *** */ - -static void task_parallel_range_func(void *UNUSED(userdata), - int index, - const TaskParallelTLS *__restrict UNUSED(tls)) -{ - const uint limit = gen_pseudo_random_number((uint)index); - for (uint i = (uint)index; i < limit;) { - i += gen_pseudo_random_number(i); - } -} - -static void task_parallel_range_test_do(const char *id, - const int num_items, - const bool use_threads) -{ - TaskParallelSettings settings; - BLI_parallel_range_settings_defaults(&settings); - settings.use_threading = use_threads; - - double averaged_timing = 0.0; - for (int i = 0; i < NUM_RUN_AVERAGED; i++) { - const double init_time = PIL_check_seconds_timer(); - for (int j = 0; j < 10; j++) { - BLI_task_parallel_range(i + j, i + j + num_items, NULL, task_parallel_range_func, &settings); - } - averaged_timing += PIL_check_seconds_timer() - init_time; - } - - printf("\t%s: non-pooled done in %fs on average over %d runs\n", - id, - averaged_timing / NUM_RUN_AVERAGED, - NUM_RUN_AVERAGED); - - averaged_timing = 0.0; - for (int i = 0; i < NUM_RUN_AVERAGED; i++) { - const double init_time = PIL_check_seconds_timer(); - TaskParallelRangePool *range_pool = BLI_task_parallel_range_pool_init(&settings); - for (int j = 0; j < 10; j++) { - BLI_task_parallel_range_pool_push( - range_pool, i + j, i + j + num_items, NULL, task_parallel_range_func, &settings); - } - BLI_task_parallel_range_pool_work_and_wait(range_pool); - BLI_task_parallel_range_pool_free(range_pool); - averaged_timing += PIL_check_seconds_timer() - init_time; - } - - printf("\t%s: pooled done in %fs on average over %d runs\n", - id, - averaged_timing / NUM_RUN_AVERAGED, - NUM_RUN_AVERAGED); -} - -TEST(task, RangeIter10KNoThread) -{ - task_parallel_range_test_do( - "Range parallel iteration - Single thread - 10K items", 10000, false); -} - -TEST(task, RangeIter10k) -{ - task_parallel_range_test_do("Range parallel iteration - Threaded - 10K items", 10000, true); -} - -TEST(task, RangeIter100KNoThread) -{ - task_parallel_range_test_do( - "Range parallel iteration - Single thread - 100K items", 100000, false); -} - -TEST(task, RangeIter100k) -{ - task_parallel_range_test_do("Range parallel iteration - Threaded - 100K items", 100000, true); -} - -TEST(task, RangeIter1000KNoThread) -{ - task_parallel_range_test_do( - "Range parallel iteration - Single thread - 1000K items", 1000000, false); -} - -TEST(task, RangeIter1000k) -{ - task_parallel_range_test_do("Range parallel iteration - Threaded - 1000K items", 1000000, true); -} - /* *** Parallel iterations over double-linked list items. *** */ static void task_listbase_light_iter_func(void *UNUSED(userdata), diff --git a/tests/gtests/blenlib/BLI_task_test.cc b/tests/gtests/blenlib/BLI_task_test.cc index 348aa7305f9..fe0f481d469 100644 --- a/tests/gtests/blenlib/BLI_task_test.cc +++ b/tests/gtests/blenlib/BLI_task_test.cc @@ -67,80 +67,6 @@ TEST(task, RangeIter) BLI_threadapi_exit(); } -TEST(task, RangeIterPool) -{ - const int num_tasks = 10; - int data[num_tasks][NUM_ITEMS] = {{0}}; - int sum = 0; - - BLI_threadapi_init(); - - TaskParallelSettings settings; - BLI_parallel_range_settings_defaults(&settings); - settings.min_iter_per_thread = 1; - - TaskParallelRangePool *range_pool = BLI_task_parallel_range_pool_init(&settings); - - for (int j = 0; j < num_tasks; j++) { - settings.userdata_chunk = ∑ - settings.userdata_chunk_size = sizeof(sum); - settings.func_reduce = task_range_iter_reduce_func; - - BLI_task_parallel_range_pool_push( - range_pool, 0, NUM_ITEMS, data[j], task_range_iter_func, &settings); - } - - BLI_task_parallel_range_pool_work_and_wait(range_pool); - - /* Those checks should ensure us all items of the listbase were processed once, and only once - - * as expected. */ - { - int expected_sum = 0; - for (int j = 0; j < num_tasks; j++) { - for (int i = 0; i < NUM_ITEMS; i++) { - // EXPECT_EQ(data[j][i], i); - expected_sum += i; - } - } - EXPECT_EQ(sum, expected_sum); - } - - /* A pool can be re-used until it is freed. */ - - for (int j = 0; j < num_tasks; j++) { - memset(data[j], 0, sizeof(data[j])); - } - sum = 0; - - for (int j = 0; j < num_tasks; j++) { - settings.userdata_chunk = ∑ - settings.userdata_chunk_size = sizeof(sum); - settings.func_reduce = task_range_iter_reduce_func; - - BLI_task_parallel_range_pool_push( - range_pool, 0, NUM_ITEMS, data[j], task_range_iter_func, &settings); - } - - BLI_task_parallel_range_pool_work_and_wait(range_pool); - - BLI_task_parallel_range_pool_free(range_pool); - - /* Those checks should ensure us all items of the listbase were processed once, and only once - - * as expected. */ - { - int expected_sum = 0; - for (int j = 0; j < num_tasks; j++) { - for (int i = 0; i < NUM_ITEMS; i++) { - // EXPECT_EQ(data[j][i], i); - expected_sum += i; - } - } - EXPECT_EQ(sum, expected_sum); - } - - BLI_threadapi_exit(); -} - /* *** Parallel iterations over mempool items. *** */ static void task_mempool_iter_func(void *userdata, MempoolIterData *item) -- cgit v1.2.3