Merge pull request #3391 from alalek:ocl_failure_messages
This commit is contained in:
commit
cf0cc00547
@ -1453,7 +1453,7 @@ bool useOpenCL()
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
data->useOpenCL = (int)haveOpenCL() && Device::getDefault().ptr() != NULL;
|
data->useOpenCL = (int)haveOpenCL() && Device::getDefault().ptr() && Device::getDefault().available();
|
||||||
}
|
}
|
||||||
catch (...)
|
catch (...)
|
||||||
{
|
{
|
||||||
@ -2130,7 +2130,8 @@ const Device& Device::getDefault()
|
|||||||
{
|
{
|
||||||
const Context& ctx = Context::getDefault();
|
const Context& ctx = Context::getDefault();
|
||||||
int idx = coreTlsData.get()->device;
|
int idx = coreTlsData.get()->device;
|
||||||
return ctx.device(idx);
|
const Device& device = ctx.device(idx);
|
||||||
|
return device;
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////// Context ///////////////////////////////////////////////////
|
////////////////////////////////////// Context ///////////////////////////////////////////////////
|
||||||
@ -2210,7 +2211,10 @@ static cl_device_id selectOpenCLDevice()
|
|||||||
std::vector<std::string> deviceTypes;
|
std::vector<std::string> deviceTypes;
|
||||||
|
|
||||||
const char* configuration = getenv("OPENCV_OPENCL_DEVICE");
|
const char* configuration = getenv("OPENCV_OPENCL_DEVICE");
|
||||||
if (configuration && !parseOpenCLDeviceConfiguration(std::string(configuration), platform, deviceTypes, deviceName))
|
if (configuration &&
|
||||||
|
(strcmp(configuration, "disabled") == 0 ||
|
||||||
|
!parseOpenCLDeviceConfiguration(std::string(configuration), platform, deviceTypes, deviceName)
|
||||||
|
))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
bool isID = false;
|
bool isID = false;
|
||||||
@ -2339,14 +2343,16 @@ static cl_device_id selectOpenCLDevice()
|
|||||||
}
|
}
|
||||||
|
|
||||||
not_found:
|
not_found:
|
||||||
std::cerr << "ERROR: Required OpenCL device not found, check configuration: " << (configuration == NULL ? "" : configuration) << std::endl
|
if (!configuration)
|
||||||
|
return NULL; // suppress messages on stderr
|
||||||
|
|
||||||
|
std::cerr << "ERROR: Requested OpenCL device not found, check configuration: " << (configuration == NULL ? "" : configuration) << std::endl
|
||||||
<< " Platform: " << (platform.length() == 0 ? "any" : platform) << std::endl
|
<< " Platform: " << (platform.length() == 0 ? "any" : platform) << std::endl
|
||||||
<< " Device types: ";
|
<< " Device types: ";
|
||||||
for (size_t t = 0; t < deviceTypes.size(); t++)
|
for (size_t t = 0; t < deviceTypes.size(); t++)
|
||||||
std::cerr << deviceTypes[t] << " ";
|
std::cerr << deviceTypes[t] << " ";
|
||||||
|
|
||||||
std::cerr << std::endl << " Device name: " << (deviceName.length() == 0 ? "any" : deviceName) << std::endl;
|
std::cerr << std::endl << " Device name: " << (deviceName.length() == 0 ? "any" : deviceName) << std::endl;
|
||||||
CV_Error(CL_INVALID_DEVICE, "Requested OpenCL device is not found");
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -128,6 +128,9 @@ void dumpOpenCLDevice()
|
|||||||
}
|
}
|
||||||
|
|
||||||
const Device& device = Device::getDefault();
|
const Device& device = Device::getDefault();
|
||||||
|
if (!device.available())
|
||||||
|
CV_ErrorNoReturn(CV_OpenCLInitError, "OpenCL device is not available");
|
||||||
|
|
||||||
DUMP_MESSAGE_STDOUT("Current OpenCL device: ");
|
DUMP_MESSAGE_STDOUT("Current OpenCL device: ");
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user