为什么 OpenCL 不是默认的 (14.04,nVidia 331)?

为什么 OpenCL 不是默认的 (14.04,nVidia 331)?

我是唯一一个没有使用 OpenCL 的人,还是这是一个常见问题?

更新:似乎删除了/etc/OpenCL/vendors/nvidia.icd应该安装的某些内容NVIDIA-OpenCL-ICD-331 简介,但事实并非如此。

它从 BOINC 开始。它拒绝计算银河系专门为我的 GPU 获取的数据:

Starting BOINC client version 7.2.42 for i686-pc-linux-gnu
...
CUDA: NVIDIA GPU 0: GeForce GT 520 (driver version unknown, CUDA version 6.0,
 compute capability 2.1, 1023MB, 999MB available, 156 GFLOPS peak)
...
Requesting new tasks for CPU and NVIDIA
App version needs OpenCL but GPU doesn't support it
Scheduler request completed: got 2 new tasks
[error] App version uses non-existent NVIDIA GPU
[error] Missing coprocessor for task de_modfit_fast_simulated15_136_free_1_14
13455402_27741174_0; aborting

所以我决定检查为什么没有 OpenCL。我找不到“官方”方法来检查 OpenCL 支持,但我发现人们使用

$ darktable -d opencl
[opencl_init] opencl related configuration options:
...
[opencl_init] trying to load opencl library: '<system default>'
[opencl_init] opencl library 'libOpenCL' found on your system and loaded
[opencl_init] could not get platforms: -1001
[opencl_init] FINALLY: opencl is NOT AVAILABLE on this system.

还尝试使用以下方法检测任何内容pyrit

$ pyrit list_cores
Pyrit 0.4.0 (C) 2008-2011 Lukas Lueg http://pyrit.googlecode.com
This code is distributed under the GNU General Public License v3+

The following cores seem available...
#1:  'CPU-Core (SSE2)'
#2:  'CPU-Core (SSE2)'

最终发现clinfo

$ clinfo
I: ICD loader reports no usable platforms

进而如何使 OpenCL 在 14.10 + Nvidia 331.89 驱动程序上运行?

我仍然不明白为什么 BOINC 无法检测 nVidia 驱动程序的版本,所以我删除boinc并安装了boinc-nvidia-cuda,但问题并没有消失。我也尝试查看是否缺少了什么opencl,但似乎没问题。

链接的问题说要安装nvidia-modprobe。我现在正在尝试。但是,我不明白这个神奇药丸应该如何工作,如果它有效 - 为什么它不是默认启用的?我还想知道是否应该有一些virtual包可以完成启用 OpenCL 所需的一切?

答案1

我不完全清楚为什么会发生这种情况或者该问题是如何解决的。

首先,NVIDIA-331-UVM NVIDIA-331-UVM从一开始就没有被激活(天知道为什么)。所以让我们激活它:

$ sudo modprobe nvidia-331-uvm
$ sudo mknod -m 666 /dev/nvidia-uvm c 249 0

然后如果你这样做,clinfo你会有同样的错误ICD 装载机. 尽管如此,如果您以 root 身份执行此操作:

$ sudo clinfo

您将获得一个好的结果 (E: -30),然后您还可以以非 root 用户身份运行该命令。长话短说:

$ clinfo
I: ICD loader reports no usable platforms
$ sudo clinfo 
E: -30
$ clinfo 
E: -30
# then you run anything as non-root user

然后,也darktable -d opencl能很好地运行,或者任何 opencl 程序;)。

更新

我最终在文件中添加了下几行/etc/rc.local

# begin opencl config
modprobe nvidia-331-uvm
mknod -m 666 /dev/nvidia-uvm c 249 0
clinfo
# end opencl config 

然后一切都顺利进行 ;)

答案2

我花了两天时间尝试将其添加gpugrid为 Boinc 项目,no usable GPUs found但都没有报告原因,所以我退出并转到 Windows 7(我讨厌这样做),直到 Boinc、Nvidia 和 Ubuntu 协调一致。

网络上有很多误导性的信息需要整理。我确实成功地使用新的图形 PPA 安装了 Nvidia 355.11 驱动程序。我证明了 GTX 960 卡和驱动程序已被识别,但是使用来自默认 Ubuntu 存储库的 darktable 测试,我证明了 OpenCL 无法正常工作,即使显卡作为计算机视频输出设备正常工作。解决缺失的 OpenCL 功能对于每个新的网格计算贡献者来说都是一个过分的要求。

相关内容