linux运行程序开启了opencl,错误:运行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与大黄蜂

之所以如此复杂,是因为我有一台nvidia

optimus笔记本电脑,该笔记本电脑对Linux的驱动程序支持不佳。为了解决这个问题,我安装了Bumblebee,可以在nvidia卡和Intel卡之间切换。

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

要做到这一点,我们需要明确地告诉大黄蜂把NVIDIA显卡上使用的命令optirun或primusrun:

optirun myopenclprogram

但是请注意,因为 重要的是打开了nvidia卡并加载了驱动程序 ,所以您无需继续使用optirun

myprogram它就可以工作(因为这总是涉及等待初始化图形卡的初始延迟。 )。

您可以运行optirun kate例如,这将打开nvidia图形卡。然后,您可以在 单独的终端中

运行没有optirun的opencl程序,并且由于图形卡已经打开(并且只要您保持运行状态就可以保持打开状态)就可以正常运行。

您会发现这次没有延迟启动程序! 这样可以节省大量等待时间,尤其是在开发有问题的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

2020-06-07

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值