Ubuntu14.04安装CUDA8.0报错could not insert 'nvidia_367_uvm':Invalid argument

来源:互联网 发布:nginx 1.8.0 漏洞 编辑:程序博客网 时间:2024/05/22 09:05

继AMAX 服务器双系统装机+TITAN X 显卡驱动装好之后

安装CUDA8.0折腾总结

到官网下载适合自己系统的CUDA8.0安装包.(有.deb和.run两种形式),推荐下载.run形式,可以自行决定是否安装NVIDIA DRIVER,因为deb文件在安装的过程中会自动安装NVIDIA GPU DRIVER,而我已经在上一篇博文中记录了如何安装好最新的显卡驱动,所以此处选择run文件安装,安装时不安装驱动,只安装toolkit以及samples.

如果此处选择deb形式安装,安装完毕后,编译官方给的示例,并运行deviceQuery这个示例,会出现如下错误:

CUDA Device Query (Runtime API) version (CUDART static linking) modprobe: ERROR: could not insert ‘nvidia_367_uvm’: Invalid argument.

错误原因在于,cuda自行安装的GPU driver,与系统中已经安装好的driver版本不匹配.要解决这个问题,可以卸载原来已经安装好的driver,也可以在安装的过程中选择不安装driver.

记之.

1.安装CUDA8.0(deb包)

 Notes: 请有英语基础的同学,自行下载安装手册,并按照步骤一步一步来操作,手册看上去页数很多,关键安装步骤只有几句话.我在下面简要列出安装过程. 1)  确保你有一块支持CUDA的GPU显卡.(例如我的GTX TITAN X) 在[这个网站](http://developer.nvidia.com/cuda-gpus)上查看你的GPU 是否支持CUDA加速. 2) 确保你的LINUX版本是CUDA支持的 在命令行(ctrl+alt+T)中运行以下命令.
$ uname -m && cat /etc/*release

会出现以下结果:

emma@emma-AMAX:~$ uname -m && cat /etc/*releasex86_64DISTRIB_ID=UbuntuDISTRIB_RELEASE=14.04DISTRIB_CODENAME=trustyDISTRIB_DESCRIPTION="Ubuntu 14.04.5 LTS"NAME="Ubuntu"VERSION="14.04.5 LTS, Trusty Tahr"ID=ubuntuID_LIKE=debianPRETTY_NAME="Ubuntu 14.04.5 LTS"VERSION_ID="14.04"HOME_URL="http://www.ubuntu.com/"SUPPORT_URL="http://help.ubuntu.com/"BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"

3) 确保你的电脑已经安装好gcc
运行以下命令查看gcc版本

$ gcc --version

4) 确保你的系统有正确的kernel headers and development packages installed
运行以下命令,获取当前版本信息

$ uname -r

运行以下命令,安装所需的头文件和包

$ sudo apt-get install linux-headers-$(uname -r)

5) 在terminal(终端)中.将目录切换到下载好的deb安装包目录下.
运行以下命令进行安装

$ sudo dpkg -i cuda-repo-<distro>_<version>_<architecture>.deb$ sudo apt-get update$ sudo apt-get install cuda

分别是安装repository meta-data,更新the Apt repository cache,安装CUDA 的命令.
6) 添加环境变量

$ export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}$ export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64\        ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

run $ sudo ldconfig to make it effective.

7) 安装运行示例
目录切换到/usr/local/cuda-8.0/bin下面,运行cuda-install-samples-8.0.sh.

$ sudo cuda-install-samples-8.0.sh <dir>

解压到当前目录

$ cuda-install-samples-8.0.sh ./

8) 确认驱动版本

$ cat /proc/driver/nvidia/version

结果:

emma@emma-AMAX:~$  cat /proc/driver/nvidia/versionNVRM version: NVIDIA UNIX x86_64 Kernel Module  367.57  Mon Oct  3 20:37:01 PDT 2016GCC version:  gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) 

其实,这个地方一开始的版本是375.27,正确的版本应该是367.57.但是咱们在上一篇博文中安装的是最新版375.之后这个更改版本的问题,我会再提及.

9) 编译示例
将terminal目录转至/usr/local/cuda-8.0/bin/NVIDIA_CUDA-8.0_Samples,在次目录下运行sudo make,调用makefile进行编译.
编译时间比较长,可能得一个小时.等到显示success.

$ sudo make

if your computer has several kernels, you can also run $ sudo make -j16to accelerate your compile speed. To the concrete number every computer is different.

10) 运行示例
进入./bin/x86_64/linux/release.
其实我第一遍运行到这里时,是显示有错误的,错误跟本文开头提到的一样.
上网搜了很多,知道为啥会有这样的错误(驱动版本不匹配,电脑自带最新版本,cuda的是367版本,所以运行时产生冲突),但是解决方法都不理想,害得我重装了一边cuda8.0,型号过程并不复杂.但是依然没解决,最后这个问题,在我装好cuda7.5后,自动解决了!!!

$ cd ./bin/x86_64/linux/release$ sudo chmod +x deviceQuery$ sudo ./deviceQuery

结果如下:

emma@emma-AMAX:/usr/local/cuda-7.5-samples/NVIDIA_CUDA-7.5_Samples/bin/x86_64/linux/release$ sudo ./deviceQuery[sudo] password for emma: ./deviceQuery Starting... CUDA Device Query (Runtime API) version (CUDART static linking)Detected 1 CUDA Capable device(s)Device 0: "GeForce GTX TITAN X"  CUDA Driver Version / Runtime Version          8.0 / 7.5  CUDA Capability Major/Minor version number:    5.2  Total amount of global memory:                 12204 MBytes (12796297216 bytes)  (24) Multiprocessors, (128) CUDA Cores/MP:     3072 CUDA Cores  GPU Max Clock rate:                            1076 MHz (1.08 GHz)  Memory Clock rate:                             3505 Mhz  Memory Bus Width:                              384-bit  L2 Cache Size:                                 3145728 bytes  Maximum Texture Dimension Size (x,y,z)         1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)  Maximum Layered 1D Texture Size, (num) layers  1D=(16384), 2048 layers  Maximum Layered 2D Texture Size, (num) layers  2D=(16384, 16384), 2048 layers  Total amount of constant memory:               65536 bytes  Total amount of shared memory per block:       49152 bytes  Total number of registers available per block: 65536  Warp size:                                     32  Maximum number of threads per multiprocessor:  2048  Maximum number of threads per block:           1024  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)  Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)  Maximum memory pitch:                          2147483647 bytes  Texture alignment:                             512 bytes  Concurrent copy and kernel execution:          Yes with 2 copy engine(s)  Run time limit on kernels:                     Yes  Integrated GPU sharing Host Memory:            No  Support host page-locked memory mapping:       Yes  Alignment requirement for Surfaces:            Yes  Device has ECC support:                        Disabled  Device supports Unified Addressing (UVA):      Yes  Device PCI Domain ID / Bus ID / location ID:   0 / 2 / 0  Compute Mode:     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 8.0, CUDA Runtime Version = 7.5, NumDevs = 1, Device0 = GeForce GTX TITAN XResult = PASS

2.安装CUDA7.5(run包)

1) 安装步骤跟8.0差不多,尤其是前期的预处理工作.
2) 安装过程

没有进入text mode,即一开始的tty1-6.直接在命令行下安装.
将terminal 找到run的文件所在位置.然后
$ sudo sh cuda_<version>_linux.run
- 按空格,查看安装条例,首先问你是否接受NVIDIA安装条例.输入accept.然后会问你是否需要安装驱动(driver),选择NO.
- 是否安装cuda toolkit, YES,选择安装位置,默认就好.
- 是否安装CUDA Samples,YES,自己找个中意的地方,把samples放下,哈哈哈.
哦了
重启电脑
根据CUDA8.0的过程,编译运行示例,看能否正常运行,你会发现,守的云开见月明,居然安装成功了,系统自带的显卡版本居然跟cuda的是一个版本了.开森
重新运行刚才cuda8.0没有运行成功的示例,发现cuda8.0,也能正常运行了~**棒棒哒**
- 我还没想好要不要卸掉一个呢,先都留着吧.
3) add PATH LD_LIBRARY_PATH to your environment like before. And test it.


## 卸载方法 ##

进入/usr/local/cuda-8.0/bin,运行

$ sudo /usr/local/cuda-8.0/bin/uninstall_cuda_8.0.pl$ sudo /usr/bin/nvidia-uninstall

Emma

WSJ8020@gmail.com

奋斗在——南山下

0 0