[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