From a6a39d47e115c66579f55ee7221b9cbf2247b773 Mon Sep 17 00:00:00 2001 From: "W. Michael Brown" Date: Thu, 6 Oct 2022 20:48:02 -0700 Subject: [PATCH] Fixing potential issues with automatic splitting of accelerators for NUMA. --- lib/gpu/geryon/ocl_device.h | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/lib/gpu/geryon/ocl_device.h b/lib/gpu/geryon/ocl_device.h index 243009109b..fafaf5275c 100644 --- a/lib/gpu/geryon/ocl_device.h +++ b/lib/gpu/geryon/ocl_device.h @@ -482,6 +482,7 @@ int UCL_Device::set_platform(int pid) { _num_devices = 0; for (int i=0; i 1) { - cl_device_id *subdevice_list = new cl_device_id[num_subdevices]; - CL_SAFE_CALL(clCreateSubDevices(device_list[i], props, num_subdevices, - subdevice_list, &num_subdevices)); - for (cl_uint j=0; j 1) { + subdevice_list = new cl_device_id[num_subdevices]; + err = clCreateSubDevices(device_list[i], props, num_subdevices, + subdevice_list, &num_subdevices); + if (err != CL_SUCCESS) { + delete[] subdevice_list; + num_subdevices = 1; + subdevice_list = device_list + i; } - delete[] subdevice_list; - } else { - _cl_devices.push_back(device_list[i]); - add_properties(device_list[i]); - _num_devices++; } #endif + + for (cl_uint j=0; j 1) delete[] subdevice_list; } // for i #endif