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

ana*_*nik 6 nvidia opencl boinc drivers 14.04

我只是一个没有 OpenCL 的人,还是一个常见问题?

更新:似乎删除了一些东西/etc/OpenCL/vendors/nvidia.icd,它应该与nvidia-opencl-icd-331 一起安装,但它没有。

它始于 BOINC。它拒绝计算专门为我的 GPU 获取的Milkyway数据:

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
Run Code Online (Sandbox Code Playgroud)

所以我决定检查一下为什么没有 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.
Run Code Online (Sandbox Code Playgroud)

还尝试通过以下方式检测任何内容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)'
Run Code Online (Sandbox Code Playgroud)

终于发现clinfo

$ clinfo
I: ICD loader reports no usable platforms
Run Code Online (Sandbox Code Playgroud)

然后如何使 OpenCL 在 14.10 + Nvidia 331.89 驱动程序上工作?

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

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

sil*_*gon 1

我不太清楚为什么会发生这种情况,也不知道问题是如何解决的。

首先,nvidia-331-uvm从一开始就没有激活(天知道为什么)。那么让我们激活它:

$ sudo modprobe nvidia-331-uvm
$ sudo mknod -m 666 /dev/nvidia-uvm c 249 0
Run Code Online (Sandbox Code Playgroud)

然后,如果您这样做,您将遇到有关ICD 加载程序的clinfo相同错误。尽管如此,如果您以 root 身份执行此操作:

$ sudo clinfo
Run Code Online (Sandbox Code Playgroud)

您将得到一个好的结果(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
Run Code Online (Sandbox Code Playgroud)

然后,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 
Run Code Online (Sandbox Code Playgroud)

然后一切都会顺利进行;)


小智 0

我花了两天令人沮丧的时间尝试添加gpugrid为 Boinc 项目。Boinc 日志说,no usable GPUs found但没有费心报告原因,所以我退出并转向 Windows 7(我讨厌这样做),直到 Boinc、Nvidia 和 Ubuntu 齐心协力。

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