Fix T94310: Blender doesn't support with 128 threads well in Win11
Query TBB for the maximum allowed concurrency, which is free from a bug in own concurrency detection code. One thing to keep in mind is that now Cycles is limited by the number of threads in the TBB areana from which Session is created. This isn't a problem for Blender since we do not limit arena on Blender side. Could be something to watch out for in other Cycles integrations. Differential Revision: https://developer.blender.org/D13658
This commit is contained in:
@@ -37,6 +37,7 @@
|
||||
#include "util/math.h"
|
||||
#include "util/string.h"
|
||||
#include "util/system.h"
|
||||
#include "util/task.h"
|
||||
#include "util/time.h"
|
||||
#include "util/types.h"
|
||||
#include "util/vector.h"
|
||||
@@ -333,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 : system_cpu_thread_count();
|
||||
int orig_cpu_threads = (threads) ? threads : TaskScheduler::num_threads();
|
||||
int cpu_threads = max(orig_cpu_threads - (subdevices.size() - 1), 0);
|
||||
|
||||
VLOG(1) << "CPU render threads reduced from " << orig_cpu_threads << " to " << cpu_threads
|
||||
|
@@ -89,7 +89,7 @@ void TaskScheduler::init(int num_threads)
|
||||
active_num_threads = num_threads;
|
||||
}
|
||||
else {
|
||||
active_num_threads = system_cpu_thread_count();
|
||||
active_num_threads = tbb::this_task_arena::max_concurrency();
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user