-Ubuntu Linux中带有Nvidia卡的OpenCL中出现1001错误



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

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

clGetPlatformIDs(1, &platform_id, &ret_num_platforms);

return-1001。

谷歌和stack告诉我,原因可能是/etc/OpenCL/供应商中缺少nvidia.cd。它不在那里,所以我添加了/etc/OpenCL/vvendors/nvidia.cd,并使用以下行

libnvidia-opencl.so.1

我还尝试了一些变体(绝对路径等)。但没有什么能解决问题。现在我不知道还能尝试什么。有什么建议吗?

编辑:我已经安装了Intel 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

现在它起作用了。我希望这能帮助到有类似问题的人。

上述问题是由驱动程序冲突引起的。如果您有类似的问题,请阅读以上编辑以获得解决方案。

最新更新