Fixed after removing TBB deprecated APIs
This commit is contained in:
parent
e13535f822
commit
3a5a0575ef
3 changed files with 14 additions and 7 deletions
|
@ -10,11 +10,11 @@
|
||||||
#include <condition_variable>
|
#include <condition_variable>
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
#include <tbb/global_control.h>
|
|
||||||
#include <tbb/parallel_for.h>
|
#include <tbb/parallel_for.h>
|
||||||
#include <tbb/task_arena.h>
|
#include <tbb/task_arena.h>
|
||||||
|
|
||||||
#include "Thread.hpp"
|
#include "Thread.hpp"
|
||||||
|
#include "Utils.hpp"
|
||||||
|
|
||||||
namespace Slic3r {
|
namespace Slic3r {
|
||||||
|
|
||||||
|
@ -199,16 +199,14 @@ void name_tbb_thread_pool_threads()
|
||||||
// TBB will respect the task affinity mask on Linux and spawn less threads than std::thread::hardware_concurrency().
|
// TBB will respect the task affinity mask on Linux and spawn less threads than std::thread::hardware_concurrency().
|
||||||
// const size_t nthreads_hw = std::thread::hardware_concurrency();
|
// const size_t nthreads_hw = std::thread::hardware_concurrency();
|
||||||
const size_t nthreads_hw = tbb::this_task_arena::max_concurrency();
|
const size_t nthreads_hw = tbb::this_task_arena::max_concurrency();
|
||||||
size_t nthreads = nthreads_hw;
|
size_t nthreads = nthreads_hw;
|
||||||
|
|
||||||
#ifdef SLIC3R_PROFILE
|
#ifdef SLIC3R_PROFILE
|
||||||
// Shiny profiler is not thread safe, thus disable parallelization.
|
// Shiny profiler is not thread safe, thus disable parallelization.
|
||||||
|
disable_multi_threading();
|
||||||
nthreads = 1;
|
nthreads = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (nthreads != nthreads_hw)
|
|
||||||
tbb::global_control(tbb::global_control::max_allowed_parallelism, nthreads);
|
|
||||||
|
|
||||||
std::atomic<size_t> nthreads_running(0);
|
std::atomic<size_t> nthreads_running(0);
|
||||||
std::condition_variable cv;
|
std::condition_variable cv;
|
||||||
std::mutex cv_m;
|
std::mutex cv_m;
|
||||||
|
|
|
@ -43,7 +43,13 @@
|
||||||
#include <boost/nowide/convert.hpp>
|
#include <boost/nowide/convert.hpp>
|
||||||
#include <boost/nowide/cstdio.hpp>
|
#include <boost/nowide/cstdio.hpp>
|
||||||
|
|
||||||
#include <tbb/global_control.h>
|
// We are using quite an old TBB 2017 U7, which does not support global control API officially.
|
||||||
|
// Before we update our build servers, let's use the old API, which is deprecated in up to date TBB.
|
||||||
|
#ifdef TBB_HAS_GLOBAL_CONTROL
|
||||||
|
#include <tbb/global_control.h>
|
||||||
|
#else
|
||||||
|
#include <tbb/task_scheduler_init.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(__linux__) || defined(__GNUC__ )
|
#if defined(__linux__) || defined(__GNUC__ )
|
||||||
#include <strings.h>
|
#include <strings.h>
|
||||||
|
@ -118,7 +124,11 @@ void trace(unsigned int level, const char *message)
|
||||||
void disable_multi_threading()
|
void disable_multi_threading()
|
||||||
{
|
{
|
||||||
// Disable parallelization so the Shiny profiler works
|
// Disable parallelization so the Shiny profiler works
|
||||||
|
#ifdef TBB_HAS_GLOBAL_CONTROL
|
||||||
tbb::global_control(tbb::global_control::max_allowed_parallelism, 1);
|
tbb::global_control(tbb::global_control::max_allowed_parallelism, 1);
|
||||||
|
#else // TBB_HAS_GLOBAL_CONTROL
|
||||||
|
static tbb::task_scheduler_init *tbb_init = new tbb::task_scheduler_init(1);
|
||||||
|
#endif // TBB_HAS_GLOBAL_CONTROL
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::string g_var_dir;
|
static std::string g_var_dir;
|
||||||
|
|
|
@ -255,7 +255,6 @@ private:
|
||||||
std::shared_ptr<UITask> m_ui_task;
|
std::shared_ptr<UITask> m_ui_task;
|
||||||
|
|
||||||
PrintState<BackgroundSlicingProcessStep, bspsCount> m_step_state;
|
PrintState<BackgroundSlicingProcessStep, bspsCount> m_step_state;
|
||||||
mutable tbb::mutex m_step_state_mutex;
|
|
||||||
bool set_step_started(BackgroundSlicingProcessStep step);
|
bool set_step_started(BackgroundSlicingProcessStep step);
|
||||||
void set_step_done(BackgroundSlicingProcessStep step);
|
void set_step_done(BackgroundSlicingProcessStep step);
|
||||||
bool is_step_done(BackgroundSlicingProcessStep step) const;
|
bool is_step_done(BackgroundSlicingProcessStep step) const;
|
||||||
|
|
Loading…
Add table
Reference in a new issue