Fix --debug-cycles printing CUDA devices twice
Reuse the CUDA devices list for Optix device detection.
This commit is contained in:
parent
16b9841fc1
commit
97f50c71b9
|
@ -494,16 +494,18 @@ vector<DeviceInfo> Device::available_devices(uint mask)
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef WITH_CUDA
|
||||
if (mask & DEVICE_MASK_CUDA) {
|
||||
#if defined(WITH_CUDA) || defined(WITH_OPTIX)
|
||||
if (mask & (DEVICE_MASK_CUDA | DEVICE_MASK_OPTIX)) {
|
||||
if (!(devices_initialized_mask & DEVICE_MASK_CUDA)) {
|
||||
if (device_cuda_init()) {
|
||||
device_cuda_info(cuda_devices);
|
||||
}
|
||||
devices_initialized_mask |= DEVICE_MASK_CUDA;
|
||||
}
|
||||
foreach (DeviceInfo &info, cuda_devices) {
|
||||
devices.push_back(info);
|
||||
if (mask & DEVICE_MASK_CUDA) {
|
||||
foreach (DeviceInfo &info, cuda_devices) {
|
||||
devices.push_back(info);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -512,7 +514,7 @@ vector<DeviceInfo> Device::available_devices(uint mask)
|
|||
if (mask & DEVICE_MASK_OPTIX) {
|
||||
if (!(devices_initialized_mask & DEVICE_MASK_OPTIX)) {
|
||||
if (device_optix_init()) {
|
||||
device_optix_info(optix_devices);
|
||||
device_optix_info(cuda_devices, optix_devices);
|
||||
}
|
||||
devices_initialized_mask |= DEVICE_MASK_OPTIX;
|
||||
}
|
||||
|
|
|
@ -45,7 +45,7 @@ Device *device_multi_create(DeviceInfo &info, Stats &stats, Profiler &profiler,
|
|||
void device_cpu_info(vector<DeviceInfo> &devices);
|
||||
void device_opencl_info(vector<DeviceInfo> &devices);
|
||||
void device_cuda_info(vector<DeviceInfo> &devices);
|
||||
void device_optix_info(vector<DeviceInfo> &devices);
|
||||
void device_optix_info(const vector<DeviceInfo> &cuda_devices, vector<DeviceInfo> &devices);
|
||||
void device_network_info(vector<DeviceInfo> &devices);
|
||||
|
||||
string device_cpu_capabilities();
|
||||
|
|
|
@ -1534,14 +1534,11 @@ bool device_optix_init()
|
|||
return true;
|
||||
}
|
||||
|
||||
void device_optix_info(vector<DeviceInfo> &devices)
|
||||
void device_optix_info(const vector<DeviceInfo> &cuda_devices, vector<DeviceInfo> &devices)
|
||||
{
|
||||
// Simply add all supported CUDA devices as OptiX devices again
|
||||
vector<DeviceInfo> cuda_devices;
|
||||
device_cuda_info(cuda_devices);
|
||||
|
||||
for (auto it = cuda_devices.begin(); it != cuda_devices.end();) {
|
||||
DeviceInfo &info = *it;
|
||||
for (const DeviceInfo &cuda_info : cuda_devices) {
|
||||
DeviceInfo info = cuda_info;
|
||||
assert(info.type == DEVICE_CUDA);
|
||||
info.type = DEVICE_OPTIX;
|
||||
info.id += "_OptiX";
|
||||
|
@ -1564,13 +1561,10 @@ void device_optix_info(vector<DeviceInfo> &devices)
|
|||
}
|
||||
|
||||
// Only add devices with RTX support
|
||||
if (rtcore_version == 0 && !getenv("CYCLES_OPTIX_TEST"))
|
||||
it = cuda_devices.erase(it);
|
||||
else
|
||||
++it;
|
||||
if (rtcore_version != 0 || getenv("CYCLES_OPTIX_TEST")) {
|
||||
devices.push_back(info);
|
||||
}
|
||||
}
|
||||
|
||||
devices.insert(devices.end(), cuda_devices.begin(), cuda_devices.end());
|
||||
}
|
||||
|
||||
Device *device_optix_create(DeviceInfo &info, Stats &stats, Profiler &profiler, bool background)
|
||||
|
|
Loading…
Reference in New Issue