Answers:
这个困惑的问题也让我感到困惑,直到我发现了一系列关于虚拟光桌的论坛帖子,参与者在其中进行了一些调试。事实证明,NVIDIA驱动程序需要一个自定义modprobe规则,该规则默认情况下未随nvidia-331
opencl驱动程序一起安装。这些规则在nvidia-modprobe
软件包中提供。
这是在具有NVIDIA驱动程序的Ubuntu 14.10上运行OpenCL所需的所有软件包的列表:
sudo apt-get install nvidia-331 nvidia-331-uvm nvidia-opencl-dev nvidia-modprobe
编辑:万一有人在Ubuntu 15.04和NVIDIA 346.59驱动程序上遇到类似问题,修复该问题的命令几乎相同:
sudo apt-get install nvidia-346 nvidia-346-uvm nvidia-opencl-dev nvidia-modprobe
Ubuntu 15.10
sudo apt-get install nvidia-352 nvidia-352-dev nvidia-prime nvidia-modprobe nvidia-opencl-dev
sudo ln -s /usr/include/nvidia-352/GL /usr/local/include
sudo ln -s /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 /usr/local/lib/libOpenCL.so
然后编译:
gcc -o main main.c -lOpenCL
并将标头用作:
#include <CL/cl.h>
笔记:
nvidia-current
软件包。它老了。要么apt-cache search nvidia
获取最新的software-properties-gtk
驱动程序,要么使用“其他驱动程序”选项卡。我真的建议升级到15.10才能使它正常工作:我以前从未尝试过。
经过测试:
对于Ubuntu 14.04,nvidia-modprobe弄乱了我的系统。但是我意识到nvidia-331-uvm并没有从一开始就被激活(上帝知道原因)。因此,让我们激活它:
$ sudo modprobe nvidia-331-uvm
$ sudo mknod -m 666 /dev/nvidia-uvm c 249 0
接着:
$ sudo clinfo
然后,您甚至可以以非root用户身份使用opencl。在Virtual Lighttable邮件列表中解释了为什么会这样。
因此,我终于在/etc/rc.local
文件中添加了以下几行:
# begin opencl config
modprobe nvidia-331-uvm
mknod -m 666 /dev/nvidia-uvm c 249 0
clinfo
# end opencl config
然后,一切都会顺利进行;)
deviceQuery
optirun --bridge primus ./deviceQuery
./deviceQuery Starting...
CUDA Device Query (Runtime API) version (CUDART static linking)
cudaGetDeviceCount returned 38
-> no CUDA-capable device is detected
Result = FAIL