Opencv 运行时错误CL_无效\u二进制文件

Opencv 运行时错误CL_无效\u二进制文件,opencv,opencl,Opencv,Opencl,我在Ubuntu12.04上运行带有opencl加速的face detect示例,在尝试为NVIDIA GeForce 8600 GT图形卡的integral cols构建内核时看到运行时错误 构建源代码:./integral\u cols\u D4\u GeForce 8600 GT.clb clCreateProgramWithSource status=0 source=all\u build\u options=clBuildProgram status=-42 OpenCV错误:ope

我在Ubuntu12.04上运行带有opencl加速的face detect示例,在尝试为NVIDIA GeForce 8600 GT图形卡的integral cols构建内核时看到运行时错误

构建源代码:./integral\u cols\u D4\u GeForce 8600 GT.clb clCreateProgramWithSource status=0 source=all\u build\u options=clBuildProgram status=-42 OpenCV错误:openCLGetKernelFromSource文件/home/ovuser/OpenCV/OpenCV-2.4.6.1/modules/ocl/src/initialization.cpp中的Gpu API调用(CL\u无效的二进制文件),在抛出'cv::Exception'what():/home/ovuser/OpenCV/OpenCV-2.4.6.1/modules/ocl/src/initialization的实例后调用了第668行terminate。cpp:668:错误:(-217)函数openCLGetKernelFromSource中的CL_无效_二进制文件


根据OpenCL标准:

如果程序是使用clCreateWithProgramWithBinary创建的,并且设备列表中列出的设备没有加载有效的程序二进制文件,则CL\ U无效\二进制文件


然而,您的错误输出表明程序是从源代码构建的。在早期的nvidia sdk和驱动程序版本中似乎有一个bug。因为你有一张很旧的卡,所以假设你的车不是新的。尝试使用相应的驱动程序安装最新的nvidia cuda toolkit。

不幸的是,使用nvidia,您会遇到一些源代码编译错误,例如未定义的函数

最好的调试方法是安装一个支持CPU(AMD或Intel)的OpenCLSDK并在那里尝试:错误消息应该在那里更好


Seb用Quadro 600板替换GeForce 8600 GT解决了该问题。我对OpenCL非常陌生,但事实证明GeForce 8600GT设备不支持双_支持硬件扩展以及原子操作,这对于人脸检测样本中使用的一些OpenCL内核是必不可少的。希望这能帮助别人

我同意图形卡8600GT确实很旧。不过,我已经安装了最新的驱动程序。我一安装NVidia Quadro 600,脸检测OpenCL样本就工作了。基于示例生成的运行时OpenCL内核源代码,我得出Quadro 600支持的双_支持硬件扩展使示例正常工作。无论如何。。谢谢你的意见。