Ubuntu16.04 + CUDA8.0 + OpenCL + Nvidia 安装配置和问题总结

2023-10-25 11:59

本文主要是介绍Ubuntu16.04 + CUDA8.0 + OpenCL + Nvidia 安装配置和问题总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 安装Nvidia的Driver(推荐配置时在其它移动设备参考本文章,部分步骤会关闭图形处理器,进入纯命令行界面,如果没有在别的地方打开或是记住下面的步骤则无法进行下去)

The input tool was broken, so just use English.

I try to use runfile to install, but failed.  There are some X file problem I could not solve.  So I find other writing and use PPA.ubuntu16.04下NVIDIA GTX965M显卡驱动PPA安装 - CSDN博客

曾经尝试使用.run文件按照以下步骤安装。提示安装成功,nvidia-smi也有输出,但是没有正在运行中的线程,并且nvidia-settings语句提示错误。错误提示有关X文件的错误,尝试解决这个问题但是失败,导致整个图形界面无法进入。因此改用PPA的方式进行安装。


.run文件安装

到官网选择适合的版本,下载.run文件。网上提供了三种方法安装,参考链接提供在下文。由于CUDA驱动中包括了Nvidia的驱动,但是这种打包的下载有可能引发问题。因此在先安装单独Nvidia的驱动。

  • 首先在官网中下载合适自己系统和GPU的驱动:官网驱动地址

如果不知道自己GPU的信息可通过以下语句查询

$ lspci | grep -i nvidia
  • 禁用nouveau
    打开配置文件
    $ sudo gedit /etc/modprobe.d/blacklist.conf
    在最后一行添加
    blacklist vga16fb
    blacklist nouveau
    blacklist rivafb
    blacklist rivatv
    blacklist nvidiafb
    更新内核
    sudo update-initramfs -u

    关机后重启进入boot,在boot中将security设置为enable,开机之后输入
    $ lsmod | grep nouveau

    没有输出则关闭成功。
  • 安装驱动,这里开始会关闭图形界面。
    禁用X服务
    $ sudo service lightdm stop
    按Ctrl+Alt+F1进入命令行界面(按Ctrl+Alt+F7可退出)
    给run文件赋予执行权限
    $ sudo chmod a+x NVIDIA-Linux-x86_64-384.98.run
    安装,这里选择了不安装OpenGL,否则会发生冲突。
    $ sudo ./NVIDIA-Linux-x86_64-384.98.run –no-opengl-files
    重启,验证是否安装成功:
    $ nvidia-smi
    

    PPA安装:
    首先也是要禁用nouveau,步骤同上。
    添加Graphic Drivers PPA
    $ sudo add-apt-repository ppa:graphics-drivers/ppa
    $ sudo apt-get update
    查找合适的版本
    $ ubuntu-drivers devices
    其中一个driver后面加上了recommend字样,记住该版本,如下图,推荐版本是390。


    按ctrl+alt+F1进入终端模式,此时会关闭图形界面。
    $ sudo service lightdm stop
    安装driver,后面的数字修改为相应的版本号。
    $ sudo apt-get install nvidia-390
    重启。
    $ sudo reboot
    验证是否安装成功
    $ nvidia-smi

    出现以上则安装成功。

    查看setting的情况:
    $ nvidia-settings


2. 安装CUDA8.0

目前CUDA的最新版本是9.1,但是安装之后编译失败,有说法是Ubuntu16.04不能够支持到这么高的版本。因此卸载了之后安装了8.0

在官网中选择需要的版本的对应的系统等下载run文件:CDUA下载


运行run文件

$ sudo sh cuda_8.0.61_375.26_linux.run
安装的时候,会出现比较长的介绍,可以不停的按空格键到100%,或者直接按Ctrl+C跳过;
下面的选项中遇到提示是否安装nvidia ,选择no,否则前面安装的驱动会被覆盖。其他的可以全部同意。


安装完成后运行sample验证

进入sample所在路径,make,在这里会编译所有的样例,时间较长,也可以进入单独的样例去make。


../NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release

里面存放了运行文件,./filename运行即可。


这里运行的是deviceQuery,出现以上结果即可。

3. 配置OpenCL

利用gcc运行OpenCL代码。需要提前确认gcc可行。

$ gcc -v
在命令行输入以上语句可查看gcc版本,若没有安装则提示未安装。安装网上gcc的安装配置安装即可。


$ gcc test.cpp -o test -lOpenCL
输入上面的语句运行测试代码test.cpp,定义输出文件为test,调用OpenCL库。


看了很多网络的教程,有一些只简单说明OpenCL已经被包含在CUDA里面。但是在本台电脑上仅安装成功CUDA之后是无法直接运行OpenCL的,它的库文件没有被链接出现以下两种错误。

  • 找不到-lOpenCL
    OpenCL库(libOpenCL.so)并不存在于/ usr / lib,即系统库中,并且OpenCL的库所在地址没有被链接。因此我们需要查找libOpenCL.so文件所在位置,添加到系统查找库的配置文件中去。
    经查找,libOpenCL.so文件被下载到了/usr/local/cuda-8.0/lib64中。
    $ sudo echo '/usr/local/cuda-8.0/lib64/' >> /etc/ld.so.conf
    此处将库文件所在路径添加进去。此时普通用户可能会引发权限不够的问题,可以通过进入root获得权限。若是初次进入root需要先设定密码。
    $ sudo passwd root
    完成之后利用以下语句可登录进root,然后再写ld.so.conf文件。
    sudo -s -H
    
    然后执行以下语句更新路径,使修改生效。

    $ sudo ldconfig
    下一步是修改环境变量。

    $ echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-8.0/lib64/' >> ~/.bashrc
    $ source ~/.bashrc
    第一句是写入配置文件,第二句是使之永久生效。
    若修改变量LD_LIBRARY_PATH不奏效,则用同样的方法修改LIBRARY_PATH。

    以上完成之后应该就不会再出现找不到-lOpenCL的问题了。

  • 找不到CL/cl.h
    错误提示:fatal error: CL/cl.h: 没有那个文件或目录
    将OpenCL的include文件拷贝到/usr/local/include文件夹下即可。
    因为语句是在CL文件夹下的cl.h,因此连带CL文件夹需要拷贝进去。
    //$ sudo cp -r /home/karin/CL/* /usr/local/include
    $ sudo cp -r /home/karin/CL /usr/local/include
    不配置到系统,利用动态链接的方法也可以链接。
    g++ -l /home/karin/opencl ....
至此OpenCL配置完毕。

参考链接:

Ubuntu 16.04安装NVIDIA驱动 - CSDN博客

【解决】Ubuntu安装NVIDIA驱动(咨询NVIDIA工程师的解决方案) - CSDN博客

Ubuntu 16.04 + Nvidia 显卡驱动 + Cuda 8.0 (问题总结 + 解决方案) - CSDN博客

ubuntu 16.04安装nVidia显卡驱动和cuda/cudnn踩坑过程 - 陈海峰的博客 - CSDN博客

ubuntu16.04 安装NVIDIA和CUDA8.0 - 奔跑_少年 - 博客园

Ubuntu14.04下Nvidia opencl例子的编译运行 - CSDN博客

在ubuntu上编译opencl需要什么? (和扩展,opencl期间) - IT屋-程序员软件开发技术分享社区

Cuda安装详细步骤 - CSDN博客

ubuntu14.04下配置cuda8.0以及测试OpenCL(测试通过) - hust_sheng的专栏 - CSDN博客

/usr/bin/ld: cannot find -lxxx 的解决办法 - zhming - 博客园

cuDNN Installation Guide :: Deep Learning SDK Documentation

ubuntu16.04下NVIDIA GTX965M显卡驱动PPA安装 - CSDN博客

这篇关于Ubuntu16.04 + CUDA8.0 + OpenCL + Nvidia 安装配置和问题总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/282442

相关文章

解决IDEA报错:编码GBK的不可映射字符问题

《解决IDEA报错:编码GBK的不可映射字符问题》:本文主要介绍解决IDEA报错:编码GBK的不可映射字符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录IDEA报错:编码GBK的不可映射字符终端软件问题描述原因分析解决方案方法1:将命令改为方法2:右下jav

MyBatis模糊查询报错:ParserException: not supported.pos 问题解决

《MyBatis模糊查询报错:ParserException:notsupported.pos问题解决》本文主要介绍了MyBatis模糊查询报错:ParserException:notsuppo... 目录问题描述问题根源错误SQL解析逻辑深层原因分析三种解决方案方案一:使用CONCAT函数(推荐)方案二:

Win安装MySQL8全过程

《Win安装MySQL8全过程》:本文主要介绍Win安装MySQL8全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Win安装mysql81、下载MySQL2、解压文件3、新建文件夹data,用于保存数据库数据文件4、在mysql根目录下新建文件my.ini

SpringBoot3.4配置校验新特性的用法详解

《SpringBoot3.4配置校验新特性的用法详解》SpringBoot3.4对配置校验支持进行了全面升级,这篇文章为大家详细介绍了一下它们的具体使用,文中的示例代码讲解详细,感兴趣的小伙伴可以参考... 目录基本用法示例定义配置类配置 application.yml注入使用嵌套对象与集合元素深度校验开发

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Redis 热 key 和大 key 问题小结

《Redis热key和大key问题小结》:本文主要介绍Redis热key和大key问题小结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、什么是 Redis 热 key?热 key(Hot Key)定义: 热 key 常见表现:热 key 的风险:二、

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

Spring 中的循环引用问题解决方法

《Spring中的循环引用问题解决方法》:本文主要介绍Spring中的循环引用问题解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录什么是循环引用?循环依赖三级缓存解决循环依赖二级缓存三级缓存本章来聊聊Spring 中的循环引用问题该如何解决。这里聊

Spring Boot中JSON数值溢出问题从报错到优雅解决办法

《SpringBoot中JSON数值溢出问题从报错到优雅解决办法》:本文主要介绍SpringBoot中JSON数值溢出问题从报错到优雅的解决办法,通过修改字段类型为Long、添加全局异常处理和... 目录一、问题背景:为什么我的接口突然报错了?二、为什么会发生这个错误?1. Java 数据类型的“容量”限制

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾