AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 541114
Accepted
user105939
user105939
Asked: 2014-10-25 09:33:26 +0800 CST2014-10-25 09:33:26 +0800 CST 2014-10-25 09:33:26 +0800 CST

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

  • 772

专有驱动程序 331.89 不给我 OpenCL。(尝试过测试/更新)有一段时间我的版本 304.123 有效 - 除了我想要当前的驱动程序,现在无法降级。

无论如何 - 我可以通过解决方法降级,但我希望 331.89 能正常工作。

我使用“darktable -d opencl”作为测试也添加了指向 darktable 的符号链接,但这对 331.89 没有帮助

nvidia
  • 3 3 个回答
  • 23873 Views

3 个回答

  • Voted
  1. Best Answer
    bkloppenborg
    2014-10-30T19:39:56+08:002014-10-30T19:39:56+08:00

    我也被这个令人费解的问题弄糊涂了,直到我发现了一系列关于Virtual Lighttable 的论坛帖子,参与者在其中进行了一些调试。事实证明,NVIDIA 驱动程序需要一个自定义的 modprobe 规则,该规则默认情况下未随nvidia-331opencl 驱动程序一起安装。这些规则在nvidia-modprobe包中提供。

    以下是让 OpenCL 在带有 NVIDIA 驱动程序的 Ubuntu 14.10 上运行所需的所有软件包的列表:

    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
    
    • 12
  2. Ciro Santilli OurBigBook.com
    2015-11-03T09:19:00+08:002015-11-03T09:19:00+08:00

    Ubuntu 20.04 安装

    现在情况好多了。查找可用的驱动程序版本:

    apt-cache search nvidia-driver
    

    安装列出的最新一个 + opencl:

    sudo apt install nvidia-driver-435 nvidia-opencl-dev
    

    您也可以在以下搜索:

    software-properties-gtk
    

    在最新驱动程序的“其他驱动程序”选项卡中。

    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
    ./main
    

    这是一个最小的测试程序:

    主程序

    #include <assert.h>
    #include <stdlib.h>
    #include <stdio.h>
    
    #include <CL/cl.h>
    
    int main() {
        cl_command_queue command_queue;
        cl_context context;
        cl_device_id device;
        cl_int input = 1;
        cl_int kernel_result = 0;
        cl_kernel kernel;
        cl_mem buffer;
        cl_platform_id platform;
        cl_program program;
        const char *source = "__kernel void increment(int in, __global int* out) { out[0] = in + 1; }";
    
        clGetPlatformIDs(1, &platform, NULL);
        clGetDeviceIDs(platform, CL_DEVICE_TYPE_ALL, 1, &device, NULL);
        context = clCreateContext(NULL, 1, &device, NULL, NULL, NULL);
        command_queue = clCreateCommandQueue(context, device, 0, NULL);
        buffer = clCreateBuffer(context, CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, sizeof(cl_int), NULL, NULL);
        program = clCreateProgramWithSource(context, 1, &source, NULL, NULL);
        clBuildProgram(program, 1, &device, "", NULL, NULL);
        kernel = clCreateKernel(program, "increment", NULL);
        clSetKernelArg(kernel, 0, sizeof(cl_int), &input);
        clSetKernelArg(kernel, 1, sizeof(cl_mem), &buffer);
        clEnqueueTask(command_queue, kernel, 0, NULL, NULL);
        clFlush(command_queue);
        clFinish(command_queue);
        clEnqueueReadBuffer(command_queue, buffer, CL_TRUE, 0, sizeof (cl_int), &kernel_result, 0, NULL, NULL);
    
        assert(kernel_result == 2);
        return EXIT_SUCCESS;
    }
    

    GitHub 上游。

    笔记

    • 查找您的 GPU 型号:如何查找我的显卡型号?
    • 测试驱动程序是否正常工作:如何检查 Ubuntu 是否正在使用我的 NVIDIA 显卡?
    • 不要安装nvidia-current包。它是旧的。要么apt-cache search nvidia获取最新的驱动程序,要么使用software-properties-gtk“其他驱动程序”选项卡。

    我真的建议升级到 15.10 来让它工作:我以前从未管理过。

    测试于:

    • 带有 NVIDIA NVS 5400M 的联想 ThinkPad T430
    • 联想 ThinkPad W540 与 NVIDIA Quadro K1100M
    • 带有 NVIDIA Quadro M1200 + Ubuntu 21.10 + 驱动程序的 Lenovo ThinkPad P51nvidia-driver-470

    相关:https ://stackoverflow.com/questions/7542808/how-to-compile-opencl-on-ubuntu/33483311#33483311

    • 3
  3. silgon
    2015-05-21T00:17:42+08:002015-05-21T00:17:42+08:00

    对于 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
    

    然后您甚至可以作为非根用户使用 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 
    

    然后一切顺利;)

    • 0

相关问题

  • 普利茅斯将来会允许使用专有图形驱动程序获得良好的启动体验吗?

  • 未连接到任何可见进程的令人讨厌的 CPU 峰值

  • 10.04 Lucid 中的多席位状态如何?[关闭]

  • 升级到 10.04 后字体模糊,Nvidia 问题?

  • 帮助让 Flash 播放器在第二个屏幕上工作?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve