使用 OpenCL 在 GPU 上 运行 时,OpenCV 给出断言失败错误
OpenCV gives Assertion failed error when running on GPU using OpenCL
我有一个 Nvidia GTX 970M GPU
并且我正在尝试 运行 使用 OpenCL 在 GPU 上 运行 的 c++ 人脸检测算法。
发生此错误的函数是:
ocl::OclCascadeClassifier::detectMultiScale()
我得到的错误是:
OpenCV Error: Assertion failed (localThreads[0] * localThreads[1] * localThreads[2] <= kernelWorkGroupSize) in cv::ocl::openCLVerifyKernel
我知道这个问题与设备的 GPU 有关,但我不知道如何解决。我试过使用 OpenCV 版本 2 和 3,但都出现了同样的问题。
问题是它试图使用 Intel HD Graphics GPU 而不是 Nvidia GPU。我通过选择 Nvidia GPU 作为 OpenCL 设备解决了这个问题。
我使用的代码是:
cv::ocl::DevicesInfo devInfo;
int res = cv::ocl::getOpenCLDevices(devInfo);
if (res == 0)
{
std::cerr << "There is no OPENCL Here !" << std::endl;
}
else
{
for (unsigned int i = 0; i < devInfo.size(); ++i)
{
std::cout << "Device : " << devInfo[i]->deviceName << " is present" << std::endl;
}
}
cv::ocl::setDevice(devInfo[1]);
我有一个 Nvidia GTX 970M GPU
并且我正在尝试 运行 使用 OpenCL 在 GPU 上 运行 的 c++ 人脸检测算法。
发生此错误的函数是:
ocl::OclCascadeClassifier::detectMultiScale()
我得到的错误是:
OpenCV Error: Assertion failed (localThreads[0] * localThreads[1] * localThreads[2] <= kernelWorkGroupSize) in cv::ocl::openCLVerifyKernel
我知道这个问题与设备的 GPU 有关,但我不知道如何解决。我试过使用 OpenCV 版本 2 和 3,但都出现了同样的问题。
问题是它试图使用 Intel HD Graphics GPU 而不是 Nvidia GPU。我通过选择 Nvidia GPU 作为 OpenCL 设备解决了这个问题。
我使用的代码是:
cv::ocl::DevicesInfo devInfo;
int res = cv::ocl::getOpenCLDevices(devInfo);
if (res == 0)
{
std::cerr << "There is no OPENCL Here !" << std::endl;
}
else
{
for (unsigned int i = 0; i < devInfo.size(); ++i)
{
std::cout << "Device : " << devInfo[i]->deviceName << " is present" << std::endl;
}
}
cv::ocl::setDevice(devInfo[1]);