Lines Matching refs:tbb

61                 tbb::task_arena arena( std::rand() % maxthread + 1 );  in InitializeAndTerminate()
70 tbb::task_arena arena( 1 ); in InitializeAndTerminate()
77 tbb::task_arena arena( tbb::task_arena::automatic ); in InitializeAndTerminate()
84 tbb::task_arena arena; in InitializeAndTerminate()
99 typedef tbb::blocked_range<int> Range;
102 static tbb::enumerable_thread_specific<int> local_id, old_id, slot_id(-3);
110 class ArenaObserver : public tbb::task_scheduler_observer {
115 int current_index = tbb::this_task_arena::current_thread_index(); in on_scheduler_entry()
128 CHECK(slot_id.local() == tbb::this_task_arena::current_thread_index()); in on_scheduler_exit()
134 ArenaObserver(tbb::task_arena &a, int maxConcurrency, int numReservedSlots, int id) in ArenaObserver()
135 : tbb::task_scheduler_observer(a) in ArenaObserver()
150 CHECK(slot_id.local() == tbb::this_task_arena::current_thread_index()); in operator ()()
162 tbb::parallel_for(Range(0,500), IndexTrackingBody(), tbb::simple_partitioner()); in operator ()()
175 struct LocalObserver : public tbb::task_scheduler_observer { in TestConcurrentArenasFunc()
176 LocalObserver() : tbb::task_scheduler_observer() { observe(true); } in TestConcurrentArenasFunc()
177 LocalObserver(tbb::task_arena& a) : tbb::task_scheduler_observer(a) { in TestConcurrentArenasFunc()
185 tbb::task_arena a1; in TestConcurrentArenasFunc()
190 tbb::task_arena a2(2,1); in TestConcurrentArenasFunc()
197 tbb::task_arena a3(1, 0); in TestConcurrentArenasFunc()
226 tbb::task_arena &my_a;
229 MultipleMastersPart1( tbb::task_arena &a, utils::SpinBarrier &b1, utils::SpinBarrier &b2) in MultipleMastersPart1()
240 tbb::task_arena &my_a;
243 MultipleMastersPart2( tbb::task_arena &a, utils::SpinBarrier &b) : my_a(a), my_b(b) {} in MultipleMastersPart2()
250 tbb::task_arena &my_a;
252 using wait_context = tbb::detail::d1::wait_context;
267 tbb::task_group_context ctx; in operator ()()
268 tbb::detail::d1::wait(myWait, ctx); in operator ()()
273 MultipleMastersPart3(tbb::task_arena &a, utils::SpinBarrier &b) in MultipleMastersPart3()
290 tbb::task_arena a(1,0); in TestMultipleMasters()
299 tbb::task_arena a(2,1); in TestMultipleMasters()
310 tbb::task_arena a(p,1); in TestMultipleMasters()
346 int slot = tbb::this_task_arena::current_thread_index(); in operator ()()
352 my_id << (stage < 3 ? (tbb::this_task_arena::current_thread_index()? in operator ()()
373 tbb::task_arena &my_a; // expected task_arena(2,1)
378 ForEachArenaEntryBody(tbb::task_arena &a, std::atomic<int> &c) in ForEachArenaEntryBody()
393 tbb::parallel_for(4, 5, *this); // in different context in operator ()()
420 tbb::task_arena a(2, 1); in TestArenaEntryConsistency()
434 tbb::task_arena &my_a;
440 …TestArenaConcurrencyBody( tbb::task_arena &a, int max_concurrency, int reserved_slots, utils::Spin… in TestArenaConcurrencyBody()
450 int idx = tbb::this_task_arena::current_thread_index(); in operator ()()
452 REQUIRE( my_a.max_concurrency() == tbb::this_task_arena::max_concurrency() ); in operator ()()
453 int max_arena_concurrency = tbb::this_task_arena::max_concurrency(); in operator ()()
473 tbb::task_arena a( p, reserved ); in TestArenaConcurrency()
474 if (p - reserved < tbb::this_task_arena::max_concurrency()) { in TestArenaConcurrency()
510 struct TestMandatoryConcurrencyObserver : public tbb::task_scheduler_observer {
513 TestMandatoryConcurrencyObserver(tbb::task_arena& a, utils::SpinBarrier& barrier) in TestMandatoryConcurrencyObserver()
514 : tbb::task_scheduler_observer(a), m_barrier(barrier) { in TestMandatoryConcurrencyObserver()
528 tbb::task_arena a(1); in TestMandatoryConcurrency()
541 CHECK(tbb::this_task_arena::max_concurrency() == 2); in TestMandatoryConcurrency()
576 const tbb::task_arena& my_arena;
577 TaskArenaValidator( const tbb::task_arena& other ) in TaskArenaValidator()
578 : my_slot_at_construction(tbb::this_task_arena::current_thread_index()) in TaskArenaValidator()
588 CHECK_MESSAGE( tbb::this_task_arena::current_thread_index()==my_slot_at_construction, in operator ()()
593 void ValidateAttachedArena( tbb::task_arena& arena, bool expect_activated, in ValidateAttachedArena()
600 if ( tbb::this_task_arena::current_thread_index() != tbb::task_arena::not_initialized ) { in ValidateAttachedArena()
601 CHECK(tbb::this_task_arena::current_thread_index() >= 0); in ValidateAttachedArena()
606 CHECK(tbb::this_task_arena::current_thread_index() == -1); in ValidateAttachedArena()
623 int default_threads = tbb::this_task_arena::max_concurrency(); in operator ()()
625 tbb::task_arena arena{tbb::task_arena::attach()}; in operator ()()
632 tbb::parallel_for(0, 1, [](int) {}); in operator ()()
634 tbb::task_arena arena2{tbb::task_arena::attach()}; in operator ()()
637 tbb::task_arena arena3; in operator ()()
638 arena3.initialize(tbb::attach()); in operator ()()
649 tbb::task_arena arena2{tbb::task_arena::attach()}; in operator ()()
656 tbb::task_arena arena2{tbb::task_arena::attach()}; in operator ()()
657 ValidateAttachedArena( arena2, true, tbb::this_task_arena::max_concurrency(), 1 ); in operator ()()
668 tbb::parallel_for( Range(0,10000*maxthread), TestAttachBody( maxthread ) ); in TestAttach()
681 tbb::task_arena a; in TestConstantFunctorRequirement()
699 tbb::parallel_for( 0, 10, utils::DummyBody( 10 ), p ); in operator ()()
706 tbb::enumerable_thread_specific<int> &myEts;
709 …ParForBody( bool outer_isolation, tbb::enumerable_thread_specific<int> &ets, std::atomic<bool> &is… in ParForBody()
717 tbb::this_task_arena::isolate( NestedParFor<NestedPartitioner>() ); in operator ()()
729 tbb::enumerable_thread_specific<int> ets( 0 ); in operator ()()
731tbb::parallel_for( 0, 1000, ParForBody<NestedPartitioner>( myOuterIsolation, ets, myIsStolen ), p … in operator ()()
742tbb::this_task_arena::isolate( OuterParFor<OuterPartitioner, NestedPartitioner>( outer_isolation, … in TwoLoopsTest()
758 TwoLoopsTest<tbb::simple_partitioner, tbb::simple_partitioner>( outer_isolation ); in TwoLoopsTest()
759 TwoLoopsTest<tbb::simple_partitioner, tbb::affinity_partitioner>( outer_isolation ); in TwoLoopsTest()
760 TwoLoopsTest<tbb::affinity_partitioner, tbb::simple_partitioner>( outer_isolation ); in TwoLoopsTest()
761 TwoLoopsTest<tbb::affinity_partitioner, tbb::affinity_partitioner>( outer_isolation ); in TwoLoopsTest()
770 tbb::enumerable_thread_specific<utils::FastRandom<>>& myRandom;
771 tbb::enumerable_thread_specific<int>& myIsolatedLevel;
775 …static void RunTwoBodies( utils::FastRandom<>& rnd, const Body &body, Partitioner& p, tbb::task_gr… in RunTwoBodies()
778 tbb::parallel_for( 0, 2, body, p, *ctx ); in RunTwoBodies()
780 tbb::parallel_for( 0, 2, body, p ); in RunTwoBodies()
782 tbb::parallel_invoke( body, body ); in RunTwoBodies()
807 tbb::task_group_context ctx; in RunNextLevel()
815 tbb::this_task_arena::isolate( IsolatedBody<Partitioner>( *this, p ) ); in RunNextLevel()
822 HeavyMixTestBody( tbb::enumerable_thread_specific<utils::FastRandom<>>& random, in HeavyMixTestBody()
823 tbb::enumerable_thread_specific<int>& isolated_level, int nested_level ) in HeavyMixTestBody()
833 RunNextLevel<tbb::auto_partitioner>( rnd, isolated_level ); in operator ()()
835 RunNextLevel<tbb::affinity_partitioner>( rnd, isolated_level ); in operator ()()
845 return utils::FastRandom<>( tbb::this_task_arena::current_thread_index() ); in operator ()()
850 …std::size_t num_threads = tbb::this_task_arena::max_concurrency() < 3 ? 3 : tbb::this_task_arena::… in HeavyMixTest()
851 tbb::global_control ctl(tbb::global_control::max_allowed_parallelism, num_threads); in HeavyMixTest()
854 tbb::enumerable_thread_specific<utils::FastRandom<>> random( init_random ); in HeavyMixTest()
855 tbb::enumerable_thread_specific<int> isolated_level( 0 ); in HeavyMixTest()
878 tbb::enumerable_thread_specific<int>& myEts;
880 ExceptionTestBody( tbb::enumerable_thread_specific<int>& ets, std::atomic<bool>& is_stolen ) in ExceptionTestBody()
884 tbb::this_task_arena::isolate( IsolatedBodyThrowsException() ); in operator ()()
895 tbb::parallel_for( 0, 10+i, utils::DummyBody( 100 ) ); in operator ()()
903 tbb::enumerable_thread_specific<int> ets; in ExceptionTest()
907 tbb::parallel_for( 0, 1000, ExceptionTestBody( ets, is_stolen ) ); in ExceptionTest()
924 tbb::this_task_arena::isolate(body); in TestNonConstBody()
929 class TestEnqueueTask : public tbb::detail::d1::task {
930 using wait_context = tbb::detail::d1::wait_context;
932 tbb::enumerable_thread_specific<bool>& executed;
937 tbb::task_arena& arena;
940 …TestEnqueueTask(tbb::enumerable_thread_specific<bool>& exe, std::atomic<int>& c, wait_context& w, in TestEnqueueTask()
943 tbb::detail::d1::task* execute(tbb::detail::d1::execution_data&) override { in execute()
954 tbb::detail::d1::task* cancel(tbb::detail::d1::execution_data&) override { return nullptr; } in cancel()
958 tbb::enumerable_thread_specific<bool>& executed;
960 tbb::task_arena& arena;
964 …TestEnqueueIsolateBody(tbb::enumerable_thread_specific<bool>& exe, std::atomic<int>& c, tbb::task_… in TestEnqueueIsolateBody()
967 tbb::task_group_context ctx; in operator ()()
968 tbb::detail::d1::wait_context waiter(N); in operator ()()
971 tbb::detail::d1::execute_and_wait(root, ctx, waiter, ctx); in operator ()()
976 tbb::enumerable_thread_specific<bool> executed(false); in TestEnqueue()
978 tbb::task_arena arena{tbb::task_arena::attach()}; in TestEnqueue()
994 tbb::task_group_context ctx; in TestEnqueue()
995 tbb::detail::d1::wait_context waiter(N); in TestEnqueue()
1005 tbb::this_task_arena::isolate(b2); in TestEnqueue()
1008 tbb::detail::d1::wait(waiter, ctx); in TestEnqueue()
1017 int platform_max_thread = tbb::this_task_arena::max_concurrency(); in TestIsolatedExecute()
1021tbb::global_control ctl(tbb::global_control::max_allowed_parallelism, utils::max(num_threads, 7)); in TestIsolatedExecute()
1026 tbb::global_control ctl(tbb::global_control::max_allowed_parallelism, num_threads); in TestIsolatedExecute()
1035 tbb::task_arena &my_a;
1038 TestDelegatedSpawnWaitBody( tbb::task_arena &a, utils::SpinBarrier &b1, utils::SpinBarrier &b2) in TestDelegatedSpawnWaitBody()
1046 tbb::task_group tg; in operator ()()
1059 if (tbb::this_task_arena::max_concurrency() < 3) { in TestDelegatedSpawnWait()
1064 tbb::task_arena a(2,0); in TestDelegatedSpawnWait()
1074 using wait_context = tbb::detail::d1::wait_context;
1076 …m_tasks, std::vector<wait_context*>& waiters, std::atomic<int>& processed, tbb::task_group_context… in TestMultipleWaitsArenaWait()
1082 tbb::detail::d1::wait(*my_waiters[my_idx], my_context); in operator ()()
1095 tbb::task_group_context& my_context;
1099 using wait_context = tbb::detail::d1::wait_context;
1101 … int bunch_size, int num_tasks, tbb::task_arena& a, std::vector<wait_context*>& waiters, std::atom… in TestMultipleWaitsThreadBody()
1110 tbb::task_arena& my_arena;
1113 tbb::task_group_context& my_context;
1117 tbb::task_arena a( num_threads ); in TestMultipleWaits()
1120 tbb::task_group_context tgc; in TestMultipleWaits()
1121 std::vector<tbb::detail::d1::wait_context*> waiters(num_tasks); in TestMultipleWaits()
1122 for (auto& w : waiters) w = new tbb::detail::d1::wait_context(0); in TestMultipleWaits()
1148 const int max_threads = std::min( 4, tbb::this_task_arena::max_concurrency() ); in TestMultipleWaits()
1150 const int max_threads = std::min( 16, tbb::this_task_arena::max_concurrency() ); in TestMultipleWaits()
1166 tbb::global_control gc(tbb::global_control::thread_stack_size, in TestSmallStackSize()
1167 tbb::global_control::active_value(tbb::global_control::thread_stack_size) / 2 ); in TestSmallStackSize()
1171 tbb::task_arena a; in TestSmallStackSize()
1202 tbb::task_arena ta; in TestFunctors()
1281 tbb::task_arena& arena() { in arena()
1282 static tbb::task_arena a; in arena()
1302 ReturnType r{tbb::this_task_arena::isolate(f)}; in TestIsolate()
1309 ReturnType r{tbb::this_task_arena::isolate(f)}; in TestIsolate()
1326 tbb::this_task_arena::isolate(Functor<void>()); in Test()
1327 tbb::this_task_arena::isolate(f2); in Test()
1328 tbb::this_task_arena::isolate(function<void>); in Test()
1339 struct MyObserver: public tbb::task_scheduler_observer {
1340 tbb::enumerable_thread_specific<tbb::task_arena*>& my_tls;
1341 tbb::task_arena& my_arena;
1346 MyObserver(tbb::task_arena& a, in MyObserver()
1347 tbb::enumerable_thread_specific<tbb::task_arena*>& tls, in MyObserver()
1351 : tbb::task_scheduler_observer(a), my_tls(tls), my_arena(a), in MyObserver()
1361 tbb::task_arena*& cur_arena = my_tls.local(); in on_scheduler_entry()
1379 n_threads = tbb::this_task_arena::max_concurrency(); in TestArenaWorkersMigrationWithNumThreads()
1397 tbb::global_control control(tbb::global_control::max_allowed_parallelism, n_threads); in TestArenaWorkersMigrationWithNumThreads()
1405 std::vector<tbb::task_arena> arenas(n_arenas); in TestArenaWorkersMigrationWithNumThreads()
1408 tbb::enumerable_thread_specific<tbb::task_arena*> tls; in TestArenaWorkersMigrationWithNumThreads()
1458 if (tbb::this_task_arena::max_concurrency() != 4) { in TestArenaWorkersMigration()
1465 int threads = tbb::this_task_arena::max_concurrency(); in TestDefaultCreatedWorkersAmount()
1472 tbb::parallel_for(0, threads, [threads, blocked, &barrier](int) { in TestDefaultCreatedWorkersAmount()
1473 …CHECK_FAST_MESSAGE(threads == tbb::this_task_arena::max_concurrency(), "concurrency level is not e… in TestDefaultCreatedWorkersAmount()
1474 …CHECK_FAST_MESSAGE(tbb::this_task_arena::current_thread_index() < tbb::this_task_arena::max_concur… in TestDefaultCreatedWorkersAmount()
1481 }, tbb::simple_partitioner()); in TestDefaultCreatedWorkersAmount()
1492 tbb::global_control thread_limit(tbb::global_control::max_allowed_parallelism, thread_num); in TestAbilityToCreateWorkers()
1515 tbb::task_arena test_arena(arena_concurrency, arena_concurrency); in ExceptionInExecute()
1543 class simple_observer : public tbb::task_scheduler_observer {
1549 int current_index = tbb::this_task_arena::current_thread_index(); in on_scheduler_entry()
1558 simple_observer(tbb::task_arena &a, int maxConcurrency, int numReservedSlots) in simple_observer()
1559 : tbb::task_scheduler_observer(a), my_idx(idx_counter++) in simple_observer()
1583 tbb::task_arena* arena;
1586 tbb::spin_rw_mutex arena_in_use{};
1588 tbb::concurrent_set<simple_observer> observers;
1590 arena_handler(tbb::task_arena* ptr) : arena(ptr) in arena_handler()
1613 tbb::spin_mutex random_operation_guard; in StressTestMixFunctionality()
1616 tbb::spin_mutex::scoped_lock lock(random_operation_guard); in StressTestMixFunctionality()
1621 tbb::spin_mutex random_arena_guard; in StressTestMixFunctionality()
1623 tbb::spin_mutex::scoped_lock lock(random_arena_guard); in StressTestMixFunctionality()
1627 tbb::concurrent_set<arena_handler> arenas_pool; in StressTestMixFunctionality()
1635 …auto find_arena = [&arenas_pool](tbb::spin_rw_mutex::scoped_lock& lock) -> decltype(arenas_pool.be… in StressTestMixFunctionality()
1650 arenas_pool.emplace(new tbb::task_arena()); in StressTestMixFunctionality()
1656 arenas_pool.emplace(new tbb::task_arena()); in StressTestMixFunctionality()
1671 tbb::spin_rw_mutex::scoped_lock lock(curr_arena->arena_in_use, /*writer*/ true); in StressTestMixFunctionality()
1680 tbb::spin_rw_mutex::scoped_lock lock{}; in StressTestMixFunctionality()
1705 tbb::spin_rw_mutex::scoped_lock lock{}; in StressTestMixFunctionality()
1710 tbb::affinity_partitioner aff; in StressTestMixFunctionality()
1711tbb::parallel_for(0, 10000, utils::DummyBody(10), tbb::auto_partitioner{}); in StressTestMixFunctionality()
1712 tbb::parallel_for(0, 10000, utils::DummyBody(10), aff); in StressTestMixFunctionality()
1720 tbb::spin_rw_mutex::scoped_lock lock{}; in StressTestMixFunctionality()
1751 …enqueue_test_helper(tbb::task_arena& arena, tbb::enumerable_thread_specific<bool>& ets , std::atom… in enqueue_test_helper()
1764 tbb::task_arena& my_arena;
1765 tbb::enumerable_thread_specific<bool>& my_ets;
1770 tbb::task_arena a(concurrency, reserved_slots); in test_threads_sleep()
1814 …REQUIRE_MESSAGE((tbb::this_task_arena::current_thread_index() == tbb::task_arena::not_initialized)…
1815 tbb::enumerable_thread_specific<int> ets;
1817 tbb::task_arena arena(int(utils::get_platform_max_threads() * 2));
1819 tbb::parallel_for(0, 10000000, [&ets](int){ in __anon1d1198c31c02()
1879 if (tbb::this_task_arena::max_concurrency() > 2) {
1929 tbb::task_arena arena;
1947 tbb::enumerable_thread_specific<bool> ets;
1948 tbb::global_control gl(tbb::global_control::max_allowed_parallelism, num_threads * 2);
1949 tbb::task_arena arena(static_cast<int>(num_threads) * 2);
1954 tbb::parallel_for(std::size_t(0), num_threads * 2, in __anon1d1198c32002()
1972 tbb::parallel_for(std::size_t(0), num_threads * 2, in __anon1d1198c32202()
1988 tbb::task_arena ta; in should_fail()
1990 …CHECK_THROWS_WITH_AS(ta.enqueue(tbb::task_handle{}), "Attempt to schedule empty… in should_fail()
1991 …CHECK_THROWS_WITH_AS(tbb::this_task_arena::enqueue(tbb::task_handle{}), "Attempt to schedule empty… in should_fail()
2014 CHECK( false == tbb::is_inside_task());
2016 tbb::task_group tg;
2018 CHECK( true == tbb::is_inside_task()); in __anon1d1198c32402()
2025 CHECK( false == tbb::is_inside_task());
2027 tbb::task_arena arena;
2031 CHECK( false == tbb::is_inside_task()); in __anon1d1198c32502()
2038 CHECK(false == tbb::is_inside_task());
2040 tbb::task_arena arena;
2041 tbb::task_group tg;
2045 CHECK(false == tbb::is_inside_task()); in __anon1d1198c32602()
2053 std::vector<tbb::task_arena> arenas(42);
2061 CHECK(tbb::this_task_arena::current_thread_index() == 0); in __anon1d1198c32802()