21

我正在尝试开始使用 OpenCL。我有两个 NVidia 显卡,我安装了“开发者驱动程序”以及来自 NVidia 网站的 SDK。我编译了演示,但是当我运行时

./oclDeviceQuery

我懂了:

OpenCL 软件信息:

clGetPlatformIDs 调用中的错误 -1001 !!!

我该如何解决?这是否意味着无法检测到我的 nvidia 卡?我正在运行 Ubuntu 10.10,X 服务器与 nvidia 驱动程序一起正常工作。

我很确定问题与文件权限无关,因为它也不适用于 sudo。

4

10 回答 10

9

就我而言,我通过安装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 是否都需要它们。

于 2015-01-05T17:56:19.600 回答
6

这是未安装 Nvidia 的 openCL 运行时的 ICD 部分的结果。ICD 配置文件将指导您在系统上安装不同的 openCL 实现的应用程序,因为来自不同供应商的多个实现可以共存。当您的应用程序找不到 ICD 信息时,它会给出错误 -1001。

于 2011-02-12T00:18:29.207 回答
3

以 root 身份运行您的程序。如果成功:您无法使用 cl_khr_icd- 扩展加载供应商驱动程序。如果您不运行 X11,则必须手动或通过(引导)脚本创建设备文件 :运行 OpenCL 代码时错误:clGetPlatformIDs -1001 (Linux)

于 2015-09-22T09:29:27.837 回答
2

在 Linux 系统上对我来说同样的问题。解决方案是将用户添加到视频组:

# sudo usermod -aG video your-user-name
于 2012-05-19T17:31:11.097 回答
1

不知道你有没有解决过这个问题,但我遇到了同样的问题,并在这篇文章中解决了这个问题:ERROR: clGetPlatformIDs -1001 when running OpenCL code (Linux)

希望能帮助到你!

于 2013-12-02T19:33:55.987 回答
1

因为我只花了几个小时,所以我想我会分享:我收到错误是因为我连接到每个远程桌面(mstsc)的机器。在机器本身上一切正常。

有人告诉我,顺便说一下,它应该与 TeamViewer 一起使用。

于 2012-01-23T14:23:27.697 回答
0

我已经通过创建的链接在 Ubuntu 13.10 saucy for intel opencl 中解决了这个问题:

sudo ln -s /opt/intel/opencl-1.2-3.2.1.16712/etc/intel64.icd /etc/OpenCL/vendors/nvidia.icd
于 2014-02-09T16:43:26.730 回答
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
于 2015-03-24T07:40:13.663 回答
-1

这可能是由于多个线程同时查询 clGetPlatformIDs

于 2015-07-14T00:36:19.140 回答
-2

您应该获取平台数量,为平台分配内存,再次获取此平台,然后从该平台创建上下文。有一个很好的例子: http: //developer.amd.com/support/KnowledgeBase/Lists/KnowledgeBase/DispForm.aspx ?ID=71

于 2011-02-28T01:25:37.480 回答