gpt4 book ai didi

linux - 错误 : clGetPlatformIDs -1001 when running OpenCL code (Linux)

转载 作者:IT王子 更新时间:2023-10-29 00:54:59 26 4
gpt4 key购买 nike

在最终设法让我的代码用 OpenCL 编译之后,我似乎无法让输出二进制文件运行!这是在我运行 Kubuntu 13.10 x64 的 Linux 笔记本电脑上

我得到的错误是(打印自 cl::Error):

ERROR: clGetPlatformIDs
-1001

我找到了 this post但似乎没有明确的解决办法。

我将自己添加到视频组,但这似乎不起作用。

关于 ICD 配置文件...我不确定我需要做什么 - 这不应该包含在 cuda 工具包中吗?如果没有,我在哪里可以下载一个?

编辑:我的系统中/usr/share/nvidia-331/nvidia.icd 下似乎有一个 ICD 文件。它包含以下文本:

libnvidia-opencl.so.1

我的系统中唯一与此类似的文件是:

/usr/lib/nvidia-331/libnvidia-opencl.so.331.20

我的 ICD 配置文件有什么问题吗?有谁知道解决它的方法吗?

最佳答案

(Mods:我不确定是否应该将此帖子移至 AskUbuntu,因为它是与 Linux bumblebee 相关的问题而不是 OpenCL 本身?)

好的,经过大量努力,我设法解决了这个问题。

我需要做两件事:

让 ICD 发挥作用

创建一个从/usr/share/nvidia-331/nvidia.icd 到/etc/OpenCL/vendors 的符号链接(symbolic link)

sudo ln -s /usr/share/nvidia-331/nvidia.icd /etc/OpenCL/vendors

注意:在大多数情况下,您需要将 nvidia-331 替换为您正在使用的任何驱动程序 - 最常见的是 nvidia-current

我真的很好奇为什么在安装 cuda 工具包时没有自动完成 - 但我注意到如果没有这一步 OpenCL 程序将无法运行!

带有大黄蜂的 Nvidia Optimus

之所以工作起来如此复杂,是因为我有一台 nvidia optimus 笔记本电脑,它在 linux 上的驱动程序支持很差。为了解决这个问题,我有 bumblebee安装允许在我的 nvidia 卡和英特尔卡之间切换。

但是,因为我使用的是 bumblebee - nvidia 显卡(和 nvidia 驱动程序)将被卸载,除非明确告知。为了使用 OpenCL,我们需要打开 nvidia 显卡。

为此,我们需要使用命令 optirunprimusrun 明确告诉 bumblebee 打开 nvidia 卡:

optirun myopenclprogram

但是请注意,因为重要的是 nvidia 卡已打开并且驱动程序已加载,您不需要继续使用 optirun myprogram 来获取此信息工作(因为这总是涉及等待图形卡初始化的初始延迟)。

例如,您可以运行 optirun kate,这将打开 nvidia 显卡。然后,您可以在 单独的终端 中运行没有 optirun 的 opencl 程序,它会工作得很好,因为图形卡已经打开(并且只要您离开,它将保持打开状态,例如 kate 运行).

您会注意到这次启动您的程序没有延迟!这为您节省了很多等待时间 - 特别是如果您正在开发有问题的 opencl 程序。

再次声明,只要您保持 nvidia 显卡开启,您的 opencl 程序就会运行。

我可能会联系 bumblebee 开发人员,看看是否有更简单的方法让它工作并在这里报告他们所说的内容。希望有一些方法可以打开和关闭 nvidia 卡,而无需保持程序(如我的示例中的 kate)运行。

我希望这对以后尝试在带有大黄蜂的 Linux 笔记本电脑上使用 OpenCL 的任何人有所帮助(我自己找不到任何明确的解决方案)

EDIT2:对于大黄蜂用户,可以按如下方式打开和关闭显卡:

开启显卡并加载nvidia模块

sudo tee /proc/acpi/bbswitch <<< ON
sudo modprobe nvidia

关闭显卡(nvidia模块自动卸载)

sudo tee /proc/acpi/bbswitch <<< OFF

关于linux - 错误 : clGetPlatformIDs -1001 when running OpenCL code (Linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20335579/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com