From c2b2b08db33a3ad33bf0afbd026b47fbeb8780e0 Mon Sep 17 00:00:00 2001 From: Anatoly Volkov Date: Fri, 12 Jul 2024 03:27:25 -0700 Subject: [PATCH] Add arena initialization --- cpp/daal/src/threading/threading.cpp | 13 +++++++++++-- cpp/daal/src/threading/threading.h | 1 + 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/cpp/daal/src/threading/threading.cpp b/cpp/daal/src/threading/threading.cpp index b0c4f696ac6..678750a8284 100644 --- a/cpp/daal/src/threading/threading.cpp +++ b/cpp/daal/src/threading/threading.cpp @@ -43,9 +43,15 @@ namespace daal { -ThreaderEnvironment::ThreaderEnvironment() : _numberOfThreads(1), _taskArena(nullptr) +ThreaderEnvironment::ThreaderEnvironment() : _numberOfThreads(1), _taskArena(nullptr), _schedulerHandle(nullptr) { std::cout << "threader env constructor" << std::endl; + #if defined(TARGET_X86_64) + _schedulerHandle = reinterpret_cast(new tbb::task_scheduler_handle(tbb::attach {})); + #endif + tbb::task_arena {}.initialize(); + std::cout << "threader env constructor end" << std::endl; + } ThreaderEnvironment::~ThreaderEnvironment() { @@ -55,6 +61,7 @@ ThreaderEnvironment::~ThreaderEnvironment() std::cout << "delete task arena" << std::endl; delete reinterpret_cast(_taskArena); _taskArena = nullptr; + std::cout << "after delete task arena" << std::endl; } } void ThreaderEnvironment::setNumberOfThreads(size_t value) @@ -67,7 +74,9 @@ void ThreaderEnvironment::setNumberOfThreads(size_t value) } if (value > 1) { - _taskArena = reinterpret_cast(new tbb::task_arena(value)); + tbb::task_arena* arenaPtr = new tbb::task_arena(value); + // arenaPtr->initialize(); + _taskArena = reinterpret_cast(arenaPtr); } _numberOfThreads = value; } diff --git a/cpp/daal/src/threading/threading.h b/cpp/daal/src/threading/threading.h index 730f0e962d3..4c6d5b42675 100644 --- a/cpp/daal/src/threading/threading.h +++ b/cpp/daal/src/threading/threading.h @@ -172,6 +172,7 @@ class ThreaderEnvironment private: size_t _numberOfThreads; void * _taskArena; + void * _schedulerHandle; }; inline ThreaderEnvironment * threader_env()