安装nvidia驱动Cuda,Cudnn

如果之前装过驱动,此时卡在登陆界面或黑屏可以尝试 卸载之前装的驱动

sudo apt-get remove nvidia-*
sudo nvidia-uninstall

sudo apt-get autoremove  //谨慎使用,可能误删别的文件  最好不用

禁掉nouveau

sudo gedit /etc/modprobe.d/blacklist-nouveau.conf
在新文件中添加
blacklist nouveau
options nouveau modeset=0

保存后执行
sudo update-initramfs -u

重启,查询 无输出则成功
lsmod | grep nouveau

安装nvidia驱动

进入文本模式后禁用图形输出
$ sudo service lightdm stop 

给驱动权限并执行安装
$ sudo chmod a+x NVIDIA-Linux-x86_64-390.77
$ sudo ./NVIDIA-Linux-x86_64-390.77 -no-opengl-files

–no-opengl-files:必须附加此项。表示只安装驱动文件,不安装OpenGL文件。这个参数不可省略,否则会导致登陆界面死循环,英语一般称为”login loop”或者”stuck in login”。
–no-x-check:表示安装驱动时不检查X服务,非必需。
–no-nouveau-check:表示安装驱动时不检查nouveau,非必需。

accept
2 The distribution-provided pre-install script failed … …
Continue installation
3 Would you like to run the nvidia-xconfig utility to automatically update your X Configuration file so set the NVIDIA X driver will be used when you restart X?
NO
4 Install 32-Bit compatibility libraries?
Yes



重启图形环境
$ sudo service lightdm start 
重启电脑
$ sudo reboot

查询是否成功
nvidia-smi

ps 安装驱动时 如果出现未关闭X服务,可以

按住ctrl+alt+F1 进入控制台
sudo init 3 注意空格 会做掉x
rm /tmp/.X*
上面的命令是删掉X 的锁文件
再次cd 到.run文件所在目录
再次执行 sudo ./.run文件
最后reboot 重启电脑。完成安装

第1步 安装依赖包

cuda卸载

sudo /usr/local/cuda-8.0/bin/uninstall_cuda_8.0.pl
  •  

卸载之后,还有一些残留的文件夹,之前安装的是CUDA 8.0。可以一并删除:

sudo rm -rf /usr/local/cuda-8.0/

 

安装后续步骤或环境必需的依赖包,依次输入以下命令:

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler

sudo apt-get install --no-install-recommends libboost-all-dev

sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev

sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

sudo apt-get install git cmake build-essential

为了方便开始安装过程的路径查找,把下载的 CUDA 安装文件移动到 HOME 路径下,然后通过 Ctrl + Alt + F1 进入文本模式,输入帐号密码登录,通过 Ctrl + Alt + F7 可返回图形化模式,在文本模式登录后首先关闭桌面服务:

sudo service lightdm stop

然后通过 Ctrl + Alt + F7 发现已无法成功返回图形化模式,说明桌面服务已成功关闭,注意此步对接下来的 nvidia 驱动安装尤为重要,必需确保桌面服务已关闭。

Ctrl + Alt + F1 进入文本模式,然后运行 CUDA 安装文件进行安装,之前我们已经把 CUDA 安装文件移动至 HOME,直接通过 sh 命令运行安装文件即可:

sudo sh cuda_8.0.61_375.26_linux.run --no-opengl-libs

   

其中 cuda_8.0.61_375.26_linux.run 是我的 CUDA 安装文件名,而你需替换为自己的 CUDA 安装文件名,若此时忘记可直接通过 ls 文件查看文件名,这也是我建议把 CUDA 安装文件移动到 HOME 下的另一个原因。

执行此命令约1分钟后会出现 0%信息,此时长按回车键让此百分比增长,直到100%,然后按照提示操作即可,先输入 accept ,然后让选择是否安装 nvidia 驱动,这里的选择对应第5步开头,若未安装则输入 “y”,若确保已安装正确驱动则输入“n”。

剩下的选择则都输入“y”确认安装或确认默认路径安装,开始安装,此时若出现安装失败提示则可能为未关闭桌面服务或在已安装 nvidia 驱动的情况下重复再次安装 nvidia 驱动,安装完成后输入重启命令重启:

reboot

    1

重启后登录进入系统,配置 CUDA 环境变量,与第3步相同,使用 gedit 命令打开配置文件:

sudo gedit ~/.bashrc

    1

在该文件最后加入以下两行并保存:

export PATH=/usr/local/cuda-8.0/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

    1
    2
    3

使该配置生效:

source ~/.bashrc

    1

第6步 验证 CUDA 8.0 是否安装成功

分别执行以下命令:

cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery

sudo make

./deviceQuery

    1
    2
    3
    4
    5

若看到类似以下信息则说明 cuda 已安装成功:

./deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GeForce GT 740M"
  CUDA Driver Version / Runtime Version          8.0 / 8.0
  CUDA Capability Major/Minor version number:    3.5
  Total amount of global memory:                 2004 MBytes (2100953088 bytes)
  ( 2) Multiprocessors, (192) CUDA Cores/MP:     384 CUDA Cores
  GPU Max Clock rate:                            1032 MHz (1.03 GHz)
  Memory Clock rate:                             800 Mhz
  Memory Bus Width:                              64-bit
  L2 Cache Size:                                 524288 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 1 copy engine(s)
  Run time limit on kernels:                     No
  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 / 1 / 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 = 8.0, NumDevs = 1, Device0 = GeForce GT 740M
Result = PASS

 

cudnn安装

官网选择 cuDNN v5.1 -> cuDNN v5.1 Libraryfor Linux

 

二、安装cuDNN


把头文件和库文件拷贝到cuda的安装目录中,首先确保cuda的安装目录是/usr/local/cuda/,之前安装cuda时,已经默认安装目录为/usr/local/cuda/了

sudo tar -xzvf cudnn-8.0-linux-x64-v5.1.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64


文件拷贝成功

 

 

查看cudnn版本


sudo cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A2

 

 

 

 

 

安装caffe时报错

.build_release/lib/libcaffe.so:对‘google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(int, std::string const&, google::protobuf::io::CodedOutputStream*)’未定义的引用
.build_release/lib/libcaffe.so:对‘google::protobuf::io::CodedOutputStream::WriteStringWithSizeToArray(std::string const&, unsigned char*)’未定义的引用
.build_release/lib/libcaffe.so:对‘google::protobuf::Message::GetTypeName() const’未定义的引用
.build_release/lib/libcaffe.so:对‘google::protobuf::MessageFactory::InternalRegisterGeneratedFile(char const*, void (*)(std::string const&))’未定义的引用
.build_release/lib/libcaffe.so:对‘leveldb::DB::Open(leveldb::Options const&, std::string const&, leveldb::DB**)’未定义的引用
.build_release/lib/libcaffe.so:对‘google::protobuf::Message::DebugString() const’未定义的引用
.build_release/lib/libcaffe.so:对‘google::base::CheckOpMessageBuilder::NewString()’未定义的引用
.build_release/lib/libcaffe.so:对‘google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(int, std::string const&, google::protobuf::io::CodedOutputStream*)’未定义的引用
.build_release/lib/libcaffe.so:对‘google::protobuf::MessageLite::ParseFromString(std::string const&)’未定义的引用
.build_release/lib/libcaffe.so:对‘google::protobuf::internal::empty_string_’未定义的引用
.build_release/lib/libcaffe.so:对‘google::protobuf::internal::NameOfEnum(google::protobuf::EnumDescriptor const*, int)’未定义的引用
.build_release/lib/libcaffe.so:对‘google::protobuf::internal::WireFormatLite::WriteString(int, std::string const&, google::protobuf::io::CodedOutputStream*)’未定义的引用
.build_release/lib/libcaffe.so:对‘leveldb::Status::ToString() const’未定义的引用
.build_release/lib/libcaffe.so:对‘google::protobuf::DescriptorPool::FindFileByName(std::string const&) const’未定义的引用
.build_release/lib/libcaffe.so:对‘google::protobuf::internal::ArenaStringPtr::AssignWithDefault(std::string const*, google::protobuf::internal::ArenaStringPtr)’未定义的引用
.build_release/lib/libcaffe.so:对‘google::protobuf::internal::WireFormatLite::ReadBytes(google::protobuf::io::CodedInputStream*, std::string*)’未定义的引用
.build_release/lib/libcaffe.so:对‘google::protobuf::Message::InitializationErrorString() const’未定义的引用
collect2: error: ld returned 1 exit status
Makefile:637: recipe for target '.build_release/tools/upgrade_net_proto_text.bin' failed
make: *** [.build_release/tools/upgrade_net_proto_text.bin] Error 1
make: *** 正在等待未完成的任务....
.build_release/examples/siamese/convert_mnist_siamese_data.o:在函数‘convert_dataset(char const*, char const*, char const*)’中:
convert_mnist_siamese_data.cpp:(.text+0x4cd):对‘leveldb::DB::Open(leveldb::Options const&, std::string const&, leveldb::DB**)’未定义的引用
convert_mnist_siamese_data.cpp:(.text+0x911):对‘google::protobuf::internal::empty_string_’未定义的引用
convert_mnist_siamese_data.cpp:(.text+0x973):对‘google::protobuf::MessageLite::SerializeToString(std::string*) const’未定义的引用
.build_release/examples/siamese/convert_mnist_siamese_data.o:在函数‘std::string* google::MakeCheckOpString<unsigned int, int>(unsigned int const&, int const&, char const*)’中:
convert_mnist_siamese_data.cpp:(.text._ZN6google17MakeCheckOpStringIjiEEPSsRKT_RKT0_PKc[_ZN6google17MakeCheckOpStringIjiEEPSsRKT_RKT0_PKc]+0x43):对‘google::base::CheckOpMessageBuilder::NewString()’未定义的引用
.build_release/examples/siamese/convert_mnist_siamese_data.o:在函数‘std::string* google::MakeCheckOpString<unsigned int, unsigned int>(unsigned int const&, unsigned int const&, char const*)’中:
convert_mnist_siamese_data.cpp:(.text._ZN6google17MakeCheckOpStringIjjEEPSsRKT_RKT0_PKc[_ZN6google17MakeCheckOpStringIjjEEPSsRKT_RKT0_PKc]+0x43):对‘google::base::CheckOpMessageBuilder::NewString()’未定义的引用
.build_release/lib/libcaffe.so:对‘google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(int, std::string const&, google::protobuf::io::CodedOutputStream*)’未定义的引用
.build_release/lib/libcaffe.so:对‘google::protobuf::io::CodedOutputStream::WriteStringWithSizeToArray(std::string const&, unsigned char*)’未定义的引用
.build_release/lib/libcaffe.so:对‘google::protobuf::Message::GetTypeName() const’未定义的引用
.build_release/lib/libcaffe.so:对‘google::protobuf::MessageFactory::InternalRegisterGeneratedFile(char const*, void (*)(std::string const&))’未定义的引用
.build_release/lib/libcaffe.so:对‘google::protobuf::Message::DebugString() const’未定义的引用
.build_release/lib/libcaffe.so:对‘google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(int, std::string const&, google::protobuf::io::CodedOutputStream*)’未定义的引用
.build_release/lib/libcaffe.so:对‘google::protobuf::MessageLite::ParseFromString(std::string const&)’未定义的引用
.build_release/lib/libcaffe.so:对‘google::protobuf::internal::NameOfEnum(google::protobuf::EnumDescriptor const*, int)’未定义的引用
.build_release/lib/libcaffe.so:对‘google::protobuf::internal::WireFormatLite::WriteString(int, std::string const&, google::protobuf::io::CodedOutputStream*)’未定义的引用
.build_release/lib/libcaffe.so:对‘leveldb::Status::ToString() const’未定义的引用
.build_release/lib/libcaffe.so:对‘google::protobuf::DescriptorPool::FindFileByName(std::string const&) const’未定义的引用
.build_release/lib/libcaffe.so:对‘google::protobuf::internal::ArenaStringPtr::AssignWithDefault(std::string const*, google::protobuf::internal::ArenaStringPtr)’未定义的引用

主要信息是protobuf相关的错误,但其实是gcc,g++版本问题。自带的gcc7和g++7,装cuda8时换成了gcc4.8和g++4.8。这次装caffe又需要换g++5和gcc5。注意要屏蔽掉cuda的gcc版本超过5后报错。换好之后

make clean

make all -j8
.build_release/lib/libcaffe.so:对‘cv::imread(cv::String const&, int)’未定义的引用

add "opencv_imgcodecs" in Makefile.

LIBRARIES += glog gflags protobuf leveldb snappy lmdb boost_system hdf5_hl hdf5 m opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs

 

因为这个版本所用的cudnn为旧版本的,可能与新环境的cudnn不兼容,导致出现如下错误:too few argument

 

  1. In file included from ./include/caffe/util/cudnn.hpp:5:0,  
  2.                  from ./include/caffe/util/device_alternate.hpp:40,  
  3.                  from ./include/caffe/common.hpp:19,  
  4.                  from ./include/caffe/util/db.hpp:6,  
  5.                  from src/caffe/util/db.cpp:1:  
  6. /usr/local/cuda/include/cudnn.h:803:27: note: declared here  
  7.  cudnnStatus_t CUDNNWINAPI cudnnSetPooling2dDescriptor(  
  8.                            ^  
  9. make: *** [.build_release/src/caffe/util/db.o] Error 1  
  10. make: *** Waiting for unfinished jobs....  

 

     

 解决办法:

         1).将/py-faster-rcnn/caffe-fast-rcnn/include/caffe/util/cudnn.hpp 换成最新版的caffe里的cudnn的实现,即相应的cudnn.hpp.

         2).将/py-faster-rcnn/caffe-fast-rcnn/src/caffe/layer里的,所有以cudnn开头的文件,例如cudnn_lrn_layer.cu,cudnn_pooling_layer.cpp,cudnn_sigmoid_layer.cu。

   都替换成最新版的caffe里的相应的同名文件。

 

接着报错

  1. src/caffe/layers/cudnn_relu_layer.cpp: In member function ‘virtual void caffe::CuDNNReLULayer<Dtype>::LayerSetUp(const std::vector<caffe::Blob<Dtype>*>&, const std::vector<caffe::Blob<Dtype>*>&)’:  
  2. src/caffe/layers/cudnn_relu_layer.cpp:16:45: error: ‘activ_desc_’ was not declared in this scope  
  3.    cudnn::createActivationDescriptor<Dtype>(&activ_desc_, CUDNN_ACTIVATION_RELU);  
  4.                                              ^  
  5. make: *** [.build_release/src/caffe/layers/cudnn_relu_layer.o] 错误 1

 

解决:将py-faster-rcnn/caffe-fast-rcnn/include/caffe/layers的,所有以cudnn开头的文件,例如cudnn_conv_layer.hpp,cudnn_lcn_laye.hpp</p>   都替换成最新版的caffe里的相应的同名文件  

 

 

编译成功后,运行make runtest又报了个错,忘记截图了,偷了个图

报错内容和图上类似,这时

 sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.5 /usr/local/lib/libcudnn.so.5 && sudo ldconfig

make runtest -j8

make pycaffe -j8

就成功啦。

https://blog.csdn.net/u011021773/article/details/81298666#commentsedit

 

针对faster RCNN 的caffe编译

出错:

ImportError: /home/sbj/gitSources/py-faster-rcnn/tools/../lib/nms/cpu_nms.so: undefined symbol: PyFPE_jbuf

解决:

需要将lib/fast_rcnn/nms_wrapper.py文件中的from nms.cpu_nms import cpu_nms注释掉即可。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Ubuntu上安装显卡驱动CuDNNCUDA和PyTorch可以按照以下步骤进行: 1. 安装显卡驱动:可以通过以下几种方式安装显卡驱动: - 通过"Software & Updates"工具在“Additional Drivers”选项卡中选择一个适用于您的显卡型号的驱动程序,并点击“Apply Changes”进行安装。 - 通过命令行使用`ubuntu-drivers devices`命令查看可用的驱动,然后使用`sudo ubuntu-drivers autoinstall`命令自动安装推荐的驱动。 2. 安装CuDNNCuDNNNVIDIA加速库,可提供用于深度学习的GPU加速功能。可以按照以下步骤安装CuDNN: - 前往NVIDIA官方网站,下载适用于您的CUDA版本的CuDNN压缩文件(通常需要注册NVIDIA开发者账号)。 - 将CuDNN压缩文件解压缩到一个合适的位置,例如`~/cuda`文件夹。 - 打开终端,使用`cd`命令进入CuDNN解压缩文件的路径,并执行以下命令安装CuDNN: ``` sudo cp cuda/include/cudnn*.h /usr/local/cuda/include/ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn* ``` 3. 安装CUDACUDA是用于在NVIDIA GPU上进行并行计算的平行计算平台和API。可以按照以下步骤安装CUDA: - 前往NVIDIA官方网站,选择适用于您的显卡和操作系统的CUDA版本,并下载对应的运行文件(通常需要注册NVIDIA开发者账号)。 - 打开终端,使用`cd`命令进入CUDA运行文件所在的目录,并执行以下命令安装CUDA: ``` sudo sh cuda*.run ``` - 执行安装向导中的步骤,根据提示进行安装配置,包括选择安装路径和设置环境变量。 - 安装完成后,可以通过执行`nvcc --version`命令验证CUDA安装情况。 4. 安装PyTorch:PyTorch是一个用于构建深度学习模型的开源Python库。可以按照以下方式安装PyTorch: - 打开终端,执行以下命令安装PyTorch: ``` pip install torch torchvision ``` - 在安装过程中,可能需要下载和编译一些依赖项。请耐心等待安装完成。 安装完成后,您可以在Ubuntu上使用显卡驱动CuDNNCUDA和PyTorch进行深度学习任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值