我正在尝试使用OpenCL。我有两个NVidia显卡,我安装了“开发者驱动程序”以及来自NVidia网站的SDK。我编译了演示,但是当我运行时
./ oclDeviceQuery
我明白了:
OpenCL SW信息:
clGetPlatformIDs调用中的错误-1001 !!!
我该如何解决?这是否意味着无法检测到我的nvidia卡?我正在运行Ubuntu 10.10和X服务器与nvidia驱动程序正常工作。
我很确定该问题与文件权限无关,因为它也无法与sudo一起使用。
答案 0 :(得分:8)
在我的情况下,我通过安装ubuntu(utopic / multiverse)中提供的 nvidia-modprobe 包解决了这个问题。并且驱动程序本身(v346)是从https://launchpad.net/~mamarley/+archive/ubuntu/nvidia安装的 具体来说,我安装了nvidia-opencl-icd-346,nvidia-libopencl1-346,nvidia-346-uvm,nvidia-346和libcuda1-346。不确定OpenCL是否都需要它们。
答案 1 :(得分:5)
这是因为没有安装Nvidia的openCL运行时的ICD部分。 ICD配置文件将指示您的应用程序安装在系统上的不同openCL实现,因为来自不同供应商的多个实现可以共存。当您的应用程序找不到ICD信息时,它会给出错误-1001。
答案 2 :(得分:2)
Linux系统上的同样问题。解决方案是将用户添加到视频组:
# sudo usermod -aG video your-user-name
答案 3 :(得分:2)
以root身份运行您的程序。如果成功:您无法使用cl_khr_icd-扩展来加载供应商驱动程序。 如果您没有运行X11,则必须手动或通过(boot-)脚本创建设备文件: ERROR: clGetPlatformIDs -1001 when running OpenCL code (Linux)
答案 4 :(得分:1)
由于我只花了几个小时,我想我会分享: 我收到了错误,因为我已连接到每台远程桌面(mstsc)的计算机。在机器本身一切正常。
我被告知顺便说一句,它应该与TeamViewer一起使用。
答案 5 :(得分:1)
不知道你是否曾解决过这个问题,但我遇到了同样的问题并在这篇文章中解决了这个问题:ERROR: clGetPlatformIDs -1001 when running OpenCL code (Linux)
希望它有所帮助!
答案 6 :(得分:0)
我已经通过创建的链接在Ubuntu 13.10中解决了intel opencl:
sudo ln -s /opt/intel/opencl-1.2-3.2.1.16712/etc/intel64.icd /etc/OpenCL/vendors/nvidia.icd
答案 7 :(得分:0)
我刚刚在ubuntu 14.04上遇到了这个问题,我无法在网上任何地方找到任何合适的答案,包括这个帖子(虽然这是第一个出现在谷歌上)。最终为我工作的是删除所有以前的nvidia软件,然后使用nvidia网站上提供的.run文件重新安装它。通过apt-get安装组件似乎由于某种原因而失败。
1)下载CUDA .run文件:https://developer.nvidia.com/cuda-downloads
2)清除所有以前的nvidia软件包
sudo apt-get purge nvidia-*
3)安装所有运行文件组件(您可能必须停止X或在恢复模式下重新启动才能运行它)
sudo sh cuda_X.X.XX_linux.run
答案 8 :(得分:-1)
这可能是由于多个线程同时查询clGetPlatformID所致
答案 9 :(得分:-2)
您应该获得多个平台,为平台分配内存,再次获取此平台,然后从此平台创建上下文。有很好的例子: http://developer.amd.com/support/KnowledgeBase/Lists/KnowledgeBase/DispForm.aspx?ID=71