[Bf-blender-cvs] [39810b3f516] master: Cleanup: make HIP and CUDA code more consistent
Brecht Van Lommel
noreply at git.blender.org
Thu Oct 21 13:12:08 CEST 2021
Commit: 39810b3f5163cb934c87db4e623b2ae41901cef3
Author: Brecht Van Lommel
Date: Wed Oct 20 20:40:32 2021 +0200
Branches: master
https://developer.blender.org/rB39810b3f5163cb934c87db4e623b2ae41901cef3
Cleanup: make HIP and CUDA code more consistent
Ref D12834
===================================================================
M intern/cycles/device/cuda/queue.cpp
M intern/cycles/device/hip/queue.cpp
===================================================================
diff --git a/intern/cycles/device/cuda/queue.cpp b/intern/cycles/device/cuda/queue.cpp
index 1149a835b14..6b2c9a40082 100644
--- a/intern/cycles/device/cuda/queue.cpp
+++ b/intern/cycles/device/cuda/queue.cpp
@@ -41,13 +41,19 @@ CUDADeviceQueue::~CUDADeviceQueue()
int CUDADeviceQueue::num_concurrent_states(const size_t state_size) const
{
- int num_states = max(cuda_device_->get_num_multiprocessors() *
- cuda_device_->get_max_num_threads_per_multiprocessor() * 16,
- 1048576);
+ const int max_num_threads = cuda_device_->get_num_multiprocessors() *
+ cuda_device_->get_max_num_threads_per_multiprocessor();
+ int num_states = max(max_num_threads, 65536) * 16;
const char *factor_str = getenv("CYCLES_CONCURRENT_STATES_FACTOR");
if (factor_str) {
- num_states = max((int)(num_states * atof(factor_str)), 1024);
+ const float factor = (float)atof(factor_str);
+ if (factor != 0.0f) {
+ num_states = max((int)(num_states * factor), 1024);
+ }
+ else {
+ VLOG(3) << "CYCLES_CONCURRENT_STATES_FACTOR evaluated to 0";
+ }
}
VLOG(3) << "GPU queue concurrent states: " << num_states << ", using up to "
diff --git a/intern/cycles/device/hip/queue.cpp b/intern/cycles/device/hip/queue.cpp
index 6cb29670f94..a612f59fb32 100644
--- a/intern/cycles/device/hip/queue.cpp
+++ b/intern/cycles/device/hip/queue.cpp
@@ -41,22 +41,19 @@ HIPDeviceQueue::~HIPDeviceQueue()
int HIPDeviceQueue::num_concurrent_states(const size_t state_size) const
{
- int num_states = 0;
const int max_num_threads = hip_device_->get_num_multiprocessors() *
hip_device_->get_max_num_threads_per_multiprocessor();
- if (max_num_threads == 0) {
- num_states = 1048576; // 65536 * 16
- }
- else {
- num_states = max_num_threads * 16;
- }
+ int num_states = ((max_num_threads == 0) ? 65536 : max_num_threads) * 16;
const char *factor_str = getenv("CYCLES_CONCURRENT_STATES_FACTOR");
if (factor_str) {
- float factor = (float)atof(factor_str);
- if (!factor)
+ const float factor = (float)atof(factor_str);
+ if (factor != 0.0f) {
+ num_states = max((int)(num_states * factor), 1024);
+ }
+ else {
VLOG(3) << "CYCLES_CONCURRENT_STATES_FACTOR evaluated to 0";
- num_states = max((int)(num_states * factor), 1024);
+ }
}
VLOG(3) << "GPU queue concurrent states: " << num_states << ", using up to "
More information about the Bf-blender-cvs
mailing list