Fix Cycles CPU + GPU render not using CPU after recent changes
In some places the task scheduler was not initialized in time.
This commit is contained in:
@@ -72,7 +72,7 @@ CPUDevice::CPUDevice(const DeviceInfo &info_, Stats &stats_, Profiler &profiler_
|
||||
<< " CPU kernels.";
|
||||
|
||||
if (info.cpu_threads == 0) {
|
||||
info.cpu_threads = TaskScheduler::num_threads();
|
||||
info.cpu_threads = TaskScheduler::max_concurrency();
|
||||
}
|
||||
|
||||
#ifdef WITH_OSL
|
||||
|
@@ -334,7 +334,7 @@ DeviceInfo Device::get_multi_device(const vector<DeviceInfo> &subdevices,
|
||||
/* Ensure CPU device does not slow down GPU. */
|
||||
if (device.type == DEVICE_CPU && subdevices.size() > 1) {
|
||||
if (background) {
|
||||
int orig_cpu_threads = (threads) ? threads : TaskScheduler::num_threads();
|
||||
int orig_cpu_threads = (threads) ? threads : TaskScheduler::max_concurrency();
|
||||
int cpu_threads = max(orig_cpu_threads - (subdevices.size() - 1), 0);
|
||||
|
||||
VLOG(1) << "CPU render threads reduced from " << orig_cpu_threads << " to " << cpu_threads
|
||||
|
@@ -109,9 +109,10 @@ void TaskScheduler::free_memory()
|
||||
assert(users == 0);
|
||||
}
|
||||
|
||||
int TaskScheduler::num_threads()
|
||||
int TaskScheduler::max_concurrency()
|
||||
{
|
||||
return active_num_threads;
|
||||
thread_scoped_lock lock(mutex);
|
||||
return (users > 0) ? active_num_threads : tbb::this_task_arena::max_concurrency();
|
||||
}
|
||||
|
||||
/* Dedicated Task Pool */
|
||||
|
@@ -86,10 +86,9 @@ class TaskScheduler {
|
||||
static void exit();
|
||||
static void free_memory();
|
||||
|
||||
/* Approximate number of threads that will work on task, which may be lower
|
||||
* or higher than the actual number of threads. Use as little as possible and
|
||||
* leave splitting up tasks to the scheduler. */
|
||||
static int num_threads();
|
||||
/* Maximum number of threads that will work on task. Use as little as
|
||||
* possible and leave scheduling and splitting up tasks to the scheduler. */
|
||||
static int max_concurrency();
|
||||
|
||||
protected:
|
||||
static thread_mutex mutex;
|
||||
|
Reference in New Issue
Block a user