在Ubuntu Linux中使用Nvidia卡的OpenCL -1001错误

我想在Ubuntu 10.04中运行这个OpenCL的例子 。 我的显卡是NVIDIA GeForce GTX 480.我已经手动安装了最新的NVIDIA驱动程序和CUDA工具包。

该程序编译没有任何错误。 因此,与libOpenCL链接工程。 应用程序也运行,但输出是非常奇怪的(大多是零和一些随机数)。 debugging显示

clGetPlatformIDs(1, &platform_id, &ret_num_platforms); 

返回-1001。

谷歌和堆栈告诉我,原因可能是在/ etc / OpenCL /供应商缺lessnvidia.icd。 这是不是所以我已经添加/etc/OpenCL/vendors/nvidia.icd以下行

 libnvidia-opencl.so.1 

我也尝试了一些变体(绝对path等)。 但没有解决问题。 现在我不知道还有什么我可以尝试。 有什么build议么?

编辑:我已经安装了英特尔OpenCL SDK,我已经复制其icd到/ etc / OpenCL /供应商和应用程序工作正常

 clGetDeviceIDs( platform_id, CL_DEVICE_TYPE_DEFAULT, 1, &device_id, &ret_num_devices); 

对于

 clGetDeviceIDs( platform_id, CL_DEVICE_TYPE_GPU, 1, &device_id, &ret_num_devices); 

我得到错误-1。

编辑:

执行应用程序时,我注意到了控制台中的一件事情。 线执行后

 cl_int ret = clGetPlatformIDs(1, &platform_id, &ret_num_platforms); 

应用程序给我的输出

 modprobe: ERROR: ../libkmod/libkmod-module.c:809 kmod_module_insert_module() could not find module by name='nvidia_331_uvm' modprobe: ERROR: could not insert 'nvidia_331_uvm': Function not implemented 

自从我使用340版本之后,似乎与旧版本的驱动程序版本有冲突。

 cat /proc/driver/nvidia/version NVRM version: NVIDIA UNIX x86_64 Kernel Module 340.32 Tue Aug 5 20:58:26 PDT 2014 

也许我应该尝试再次删除Ubuntu自己的NVIDIA驱动程序,并再次手动重新安装最新版本?

编辑:

老司机是这个问题。 不知何故,它没有被正确地删除,因此我又一次做了

 apt-get remove nvidia-331 nvidia-opencl-icd-331 nvidia-libopencl1-331 

现在它工作。 我希望这可以帮助有类似问题的人。

上述问题是由于司机冲突而发生的。 如果您有类似的问题,请阅读上述编辑以获得解决方案。