CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台CUDA?是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。开发人员现在可以使用C语言来为CUDA?架构编写程序,C语言是应用最广泛的一种高级编程语言。所编写出的程序于是就可以在支持CUDA?的处理器上以超高性能运行。CUDA3.0已经开始支持C++和FORTRAN。
通过英伟达安装包来分别安装库的驱动程序而不是使用apt-get来安装。如果只有CPU可以跳过这步。主板BIOS里面要选择自由选择显卡,这样才能识别nvidia的显卡并进行驱动更新。快捷键ctrl+alt+T打开命令终端,加入官方ppa源(ppa简介)。$ sudo add-apt-repository ppa:graphics-drivers/ppa需要输入密码并按enter键确认。之后刷新软件库并安装最新驱动。
$ sudo apt-get update $ sudo apt-get install nvidia-367 nvidia-settings nvidia-prime安装完成后通过下面命令查看是否安装成功。
$ nvidia-settings注意安装完成后要重启,有如下效果则安装完成,否则就说明安装有问题,尝试关闭UEFI保护试试。
sudo md5sum cuda_7.5.18_linux.run 检验结果与源文件的md5sum比较。检验正确后,输入如下代码安装(第一行修改文件权限,第二行执行文件安装):
$ chmod 777 cuda_7.5.18_linux.run $ sudo ./cuda_7.5.18_linux.run --override执行代码后会跳出一个信息,左下方出现more|0%这样,此时直接按enter直到跳到100%结束退出,接下来要求输入相关配置命令,如下图,注意别弄错了,第三行配置询问是否要安装nvidia图形驱动器,一定要选n,因为之前已经安装过了,如果再安装则会报错。仔细看如下配置,别看错行。
=========== = Summary = =========== Driver: Not Selected Toolkit: Installed in /usr/local/cuda-7.5 Samples: Installed in /usr/local/cuda-7.5, but missing recommended librarie接下来安装cudnn动态库,可以获得更快计算速率。cudnn5.0 ,初次进入需要注册,然后问卷调查,之后进入如下页面选择cuDNN v5 Library for Linux进行下载。下载后名字为:cudnn-7.5-linux-x64-v5.0-ga.tgz,进入文件所在目录进行解压:
$ tar zxvf cudnn-7.5-linux-x64-v5.0-ga.tgz解压后有个cuda文件,内有include和lib64两个文件夹,进入include文件夹,执行如下命令:
$ sudo cp cudnn.h /usr/local/cuda/include/ #复制头文件再cd命令切换进lib64文件夹,执行如下命令:
$ sudo cp lib* /usr/local/cuda/lib64/ #复制动态链接库然后进入复制后的动态链接库进行新的链接:
$ cd /usr/local/cuda/lib64/ $ sudo rm -rf libcudnn.so libcudnn.so.5 #删除原有动态文件 $ sudo ln -s libcudnn.so.5.0.5 libcudnn.so.5 $ sudo ln -s libcudnn.so.5 libcudnn.so然后设置环境变量和动态链接库:
$ sudo gedit /etc/profile然后再打开的文件末尾加上(“=”前后不要有空格)
export PATH=/usr/local/cuda/bin:$PATH保存之后创建链接文件:
$ sudo vim /etc/ld.so.conf.d/cuda.conf按下键盘i进行编辑:
/usr/local/cuda/lib64按下esc,按下:wq保存退出。并在终端输入以下命令使该链接生效:
$ sudo ldconfig使用sample里面的例子来测试还需要编译。因为当前的cuda还不支持gcc5.0以上的版本,在编译之前,我们需要修改配置文件,否则无法编译成功。
$ cd /usr/local/cuda-7.5/include $ sudo cp host_config.h host_config.h.bak #备份编译头文件 $ sudo gedit host_config.h在113行将if后面的两个4改成5,改成如下所示:
#if __GNUC__ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ > 9) #error -- unsupported GNU version! gcc versions later than 4.9 are not supported! #endif /* __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 9) */然后进入用例文件进行编译(注意执行第二步命令时候需要较长时间是正常现象):
$ cd /usr/local/cuda/samples $ sudo make all -j4 $ cd /usr/local/cuda/samples/bin/x86_64/linux/release $ sudo ./deviceQuery执行命令后出现如下信息则说明显卡驱动和cuda安装成功。
$ cd ~/Downloads/ $ tar zxvf parallel_studio_xe_2016_update3.tgz #解压下载文件 $ chmod 777 parallel_studio_xe_2016_update3 -R #获取文件权限 $ cd parallel_studio_xe_2016_update3/ $ sudo ./install_GUI.sh
$ sudo gedit /etc/ld.so.conf.d/intel_mkl.conf在打开的文件中添加库文件
/opt/intel/lib/intel64 /opt/intel/mkl/lib/intel64添加完成后编译生效
$ sudo ldconfig
sudo apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-devOpenCV 进入该网站下载OpenCV3.1.0并解压缩,然后进入解压缩后的文件,创建build文件。
$ unzip opencv-3.1.0.zip $ cd opencv-3.1.0 $ mkdir build $ cd build $ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..生成的文件在bulid中,而生成的CMakeLists.txt文件在上一级文件中。在配置过程会出现– ICV: Downloading ippicv_linux_20151201.tgz…错误。可以到 ippicv_linux_20151201.tgz 下载。将下载的文件替换掉 opencv-3.1.0/3rdparty/ippicv/downloads/linux-8b449a536a2157bcad08a2b9f266828b下的同名文件,同时在opencv-3.1.0目录下的CMakeList.txt 文件的开头加入一行,然后再次cmake即可,如下:
$ cd ~/Downloads/ $ mv ippicv_linux_20151201.tgz opencv-3.1.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/ $ vim opencv-3.1.0/CMakeLists.txt在弹出的文件开头加入一行(注意里面的引号要英文状态下的):
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FORCE_INLINES")然后按esc和:wq保存退出。
$ cd opencv-3.1.0/build $ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. $ make -j4 #四核运算 $ sudo make install以上最后两步比较耗时,耐心等待。
$ bash Anaconda2-4.0.0-Linux-x86_64.sh安装完成之后,在~/.bashrc文件末尾添加Anaconda的库文件(注意“=”两边不要有空格),具体如下:
$ sudo gedit ~/.bashrc export PATH="/home/jeson/anaconda2/bin:$PATH" export LD_LIBRARY_PATH="/home/jeson/anaconda2/lib:$LD_LIBRARY_PATH"重启电脑之后,在命令行输入:
$ ipython就可以看到python的版本。
$ cd matlab2014/ ../../article/20220623/file.html然后在命令行cd进入matlab2014目录,输入:
$ sudo ./install1、选择“不联网安装”:“Use a File Installation Key”;
$ cd ~/matlab2014/Crack/Linux/ $ sudo cp libmwservices.so /usr/local/MATLAB/R2014a/bin/glnxa64/安装完成之后,直接在命令行输入matlab,就能使用matlabR2014a了。
sudo apt-get update sudo apt-get upgrade sudo apt-get install -y build-essential cmake git pkg-config sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler sudo apt-get install -y libatlas-base-dev sudo apt-get install -y --no-install-recommends libboost-all-dev sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev sudo apt-get install -y python-pip sudo apt-get install -y python-dev sudo apt-get install -y python-numpy python-scipy sudo apt-get install -y libopencv-dev下载caffe:
cd ~ git clone https://github.com/BVLC/caffe.git //从github上git caffe安装配置caffe:
cd caffe //打开到刚刚git下来的caffe cp Makefile.config.example Makefile.config //make指令只能make Makefile.config sudo gedit Makefile.config //打开Makefile.config文件配置文件修改(看英文提示根据具体修改):
OPENCV_VERSION := 3 #取消注释符号#,应用opencv3 BLAS := mkl #BLAS库应用英特尔的mkl #注释第66行自带的python ANACONDA_HOME := /home/jeson/anaconda2 #将具体anaconda2路径写入 PYTHON_INCLUDE := $(ANACONDA_HOME)/include \ $(ANACONDA_HOME)/include/python2.7 \ $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \ #PYTHON_INCLUDE之前的注释#去掉,以及之后两行前的#也去掉 PYTHON_LIB := $(ANACONDA_HOME)/lib INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial为了之后编译matlab,这里提前在配置文件中修改matlab路劲,改完后保存退出:
MATLAB_DIR := /usr/local/MATLAB/R2014aCUDNN只支持CUDA Capability 3.0以上的GPU加速,而我的笔记本显卡GT630M才2.1的加速能力,在其他3.0以上的显卡运行正常,因此选择不启用cuDNN加速,所以Makefile.config中USE_CUDNN行是注释状态不改变。为hdf5之类的文件创建新的链接
\\首先执行下面两句话: find . -type f -exec sed -i -e 's^"hdf5.h"^"hdf5/serial/hdf5.h"^g' -e 's^"hdf5_hl.h"^"hdf5/serial/hdf5_hl.h"^g' '{}' \; cd /usr/lib/x86_64-linux-gnu \\然后根据情况执行下面两句: sudo ln -s libhdf5_serial.so.10.1.0 libhdf5.so sudo ln -s libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so \\注意:这里的10.1.0和10.0.2根据不同的系统可能对应的数字会不同,比如在ubuntu16.04中其数字就是10.1.0. \\具体的数字可以在输入命令时候使用tab键补全查看打开makefile文件搜索并替换
NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)为
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
$ sudo gedit ~/.bashrc
在打开的文件末尾加上:
export LD_LIBRARY_PATH="/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH”
在命令行输入:
sudo ldconfig #编译立即生效
然后进入caffe目录:
make all -j4
make test -j4
make runtest
这里runtest会报错如下:解决方法是在~/.bashrc文件末尾添加输入一行,具体如下:
sudo gedit ~/.bashrc
export MKL_CBWR=AUTO #打开的文件末尾加入该行,然后保存退出。
sudo ldconfig #编译立即生效
然后再来一遍
make clean
make all -j4
make test -j4
make runtest
正确结果是如下:
如果编译没有报错,则基本没问题。在运用anaconda和matlab时都需要修改相应的内容。
anaconda需要将caffe头文件进行链接:
$ sudo gedit ~/.bashrc
输入
export PYTHONPATH="/home/jeson/caffe/python:$PYTHONPATH"
保存后在命令行输入:
sudo ldconfig
make pycaffe
make distribute
ipython
import caffe
最后如果没有跳出错误则说明编译成功,即可调用caffe模块。将matlab下的libstdc++.so.6 更改名称为libstd++.so.6_back(让matlab找不到这个,但是为了安全还是备份一下吧),这样在执行matlab编译的时候会自动去找系统用的库。具体为:
cd /usr/local/MATLAB/R2014a/sys/os/glnxa64/
sudo mv libstdc++.so.6 libstdc++.so.6_back
sudo ldconfig
cd ~/caffe/
make matcaffe
make mattest
出现下图说明编译正确:
测试matlab打开./caffe/matlab/+caffe/private,看有没有生成一个caffe的mex文件,可以运行+test文件夹里面的程序测试。
至此,暂时应该算是安装完成。