linux环境下运行open error,错误:运行OpenCL代码时clGetPlatformIDs -1001(Linux)

(Mods:我不确定这篇文章是否应该转移到AskUbuntu,因为这是一个与Linux bumblebee相关的问题,而不是OpenCL本身?)

好的,所以我设法在经过大量的努力后解决了这个问题.

我需要做两件事:

让ICD工作

创建从/usr/share/nvidia-331/nvidia.icd到/ etc / OpenCL / vendors的符号链接

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

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

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

Nvidia Optimus和Bumblebee

之所以如此复杂,以至于我有一台nvidia optimus笔记本电脑,在linux上的驱动程序支持很差.为了解决这个问题,我安装了bumblebee以允许在我的nvidia卡和intel卡之间切换.

但是,因为我正在使用大黄蜂 – 除非明确告知,否则将卸载nvidia显卡(和nvidia驱动程序).为了使用OpenCL,我们需要打开nvidia显卡.

要做到这一点,我们需要明确告诉大黄蜂使用命令optirun或primusrun打开nvidia卡:

optirun myopenclprogram

但请注意,因为所有重要的是nvidia卡已打开并且驱动程序已加载,您无需继续使用optirun myprogram来使其工作(因为这总是涉及等待显卡的初始延迟初始化).

例如,您可以运行optirun kate,这将打开nvidia显卡.然后,您可以在一个单独的终端中运行opencl程序而不使用optirun,它可以正常工作,因为显卡已经打开(并且只要您离开,例如kate运行就会保持打开状态).

您会注意到这次启动程序没有延迟!这可以节省您很多等待 – 特别是如果您正在开发有问题的opencl程序.

再一次,只要你打开nvidia显卡,你的opencl程序就可以运行了.

我可能会联系大黄蜂开发者,看看是否有更简单的方法让这个工作并报告他们在这里说的话.希望有一些方法可以打开和关闭nvidia卡,而无需保持程序(如我的例子中的kate)运行.

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

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

打开显卡并加载nvidia模块

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

sudo modprobe nvidia

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值