[GPU] Added try/catch for device detection loop to skip platforms which throw an exception (#17011)

This commit is contained in:
Vladimir Paramuzov authored and GitHub committed 2023-04-19 11:05:24 +04:00
1 parent 498486588e
commit dbd20ec799
1 file changed
+12 -6
@@ -197,12 +197,18 @@ std::vector<device::ptr> ocl_device_detector::create_device_list() const {
for (auto& id : platform_ids) {
cl::Platform platform = cl::Platform(id);
std::vector<cl::Device> devices;
platform.getDevices(CL_DEVICE_TYPE_ALL, &devices);
for (auto& device : devices) {
if (!does_device_match_config(device))
continue;
supported_devices.emplace_back(std::make_shared<ocl_device>(device, cl::Context(device), id));
try {
std::vector<cl::Device> devices;
platform.getDevices(CL_DEVICE_TYPE_ALL, &devices);
for (auto& device : devices) {
if (!does_device_match_config(device))
continue;
supported_devices.emplace_back(std::make_shared<ocl_device>(device, cl::Context(device), id));
}
} catch (std::exception& ex) {
GPU_DEBUG_LOG << "Devices query/creation failed for " << platform.getInfo<CL_PLATFORM_NAME>() << ": " << ex.what() << std::endl;
GPU_DEBUG_LOG << "Platform is skipped" << std::endl;
continue;
}
}
OPENVINO_ASSERT(!supported_devices.empty(), create_device_error_msg);