您的位置:首页 > 编程语言 > Python开发

Ubuntu16.04+GTX1070+python3.6+anaconda3+CUDA8.0+cudnn5.1+opencv3.2.0+TensorFlow1.2.1(GPU)

2017-12-08 12:49 876 查看

1 更新源和安装的包

更新源和已经安装的包:

sudo apt-get update
sudo apt-get upgrade


2 gcc/g++降级

cuda8.0对gcc5不支持,在编译时会出问题,所以此处将Ubuntu16.04自带的gcc和g++降级到4.9版本。

sudo apt-get install -y gcc-4.9
sudo apt-get install -y g++-4.9
cd /usr/bin
sudo rm gcc
sudo ln -s gcc-4.9 gcc
sudo rm g++
sudo ln -s g++-4.9 g++


3 python3.6的安装及设定

1、配置软件仓库,因为python 3.6 新版没有发布到ubuntu的正式仓库中,所以通过第3方仓库来做。在命令行中输入:

sudo add-apt-repository ppa:jonathonf/python-3.6


2、检查系统软件包并安装 python 3.6

sudo apt-get update
sudo apt-get install python3.6


3.配置默认使用3.6版本,执行以下命令

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2

sudo update-alternatives --config python3


4、最后,确认一下

python3 -V


更换python版本后出现 No module named "apt_pkg"

$ sudo apt-get remove --purge python-apt  

$ sudo apt-get install python-apt -f  

$ sudo find / -name "apt_pkg.cpython-35m-x86_64-linux-gnu.so"  

$ cd /usr/lib/python3/dist-packages/  

$ sudo cp apt_pkg.cpython-35m-x86_64-linux-gnu.so apt_pkg.cpython-36m-x86_64-linux-gnu.so   

4 nouveau启动禁用

nouveau是ubuntu自带的显卡驱动,在禁用后才能使用NVIDIA驱动。

新建黑名单文件,将nouveau加入。

sudo gedit /etc/modprobe.d/blacklist-nouveau.conf


在新建的文件中输入:

blacklist nouveau
options nouveau modset=0


保存文件并退出,然后在终端执行如下命令:

sudo update-initramfs -u


检查禁用是否成功:

lspci | grep nouveau


不报错就可以继续啦。

5 NVIDIA驱动安装

进入NVIDIA官网,根据操作系统和显卡型号查找最新的驱动版本,这里使用的是384.69版本。此处只用记下驱动程序型号,不用下载。

sudo add-apt-repository ppa:graphics-drivers/ppa  

sudo apt-get update  

sudo apt-get install nvidia-384(384是你查到的版本号)  

sudo apt-get install mesa-common-dev  

sudo apt-get install freeglut3-dev  

执行完上述后,重启(reboot)。

重启后输入

nvidia-smi  
如果出现了你的GPU列表,则说明驱动安装成功了。另外也可以通过,或者输入

nvidia-settings  

代码中384是在官网查找到的合适的驱动版本,此处可以进行相应替换。 

这里可能出现登录不进桌面,重启即可。

进入桌面后,在终端确认显卡信息是否正确:

nvidia-smi  

如果显示了自己显卡的信息,就说明安装成功了。

6 CUDA8.0安装

下载cuda8.0
https://developer.nvidia.com/cuda-80-ga2-download-archive
注意要选择



在下载的目录打开终端,输入如下指令安装。

sudo sh cuda_8.0.61_375.26_linux.run

按照终端的提示一步步操作即可:

按q退出条款浏览或者按空格直到条款末尾,输入 accept 接受条款。

输入n不安装nvidia图像驱动,因为前面已经安装好驱动。如果这里按照默认选择yes,则前面安装的高版本nvidia驱动将被替换成为cuda里带的低版本nvidia驱动。

输入y安装cuda 8.0 toolkit。

回车确认cuda默认安装路径(/usr/local/cuda-8.0)。

输入y安装CUDA 8.0 Samples。

输入CUDA 8.0 Samples安装路径:/home/用户名/CUDA/samples。

至此CUDA安装完成,下面需要配置CUDA的环境变量,保证其正常工作。

打开新终端,设置CUDA环境变量:

1、配置cuda8.0之后主要加上的一个环境变量声明,在文件~/.bashrc之后加上

gedit ~/.bashrc  

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}}
 

然后设置环境变量和动态链接库,在命令行输入

sudo gedit /etc/profile  

在打开的文件里面加上(注意等号两边不能有空格)

export PATH=/usr/local/cuda/bin:$PATH  
保存之后,创建链接文件

sudo gedit /etc/ld.so.conf.d/cuda.conf  
在打开的文件中添加如下语句:

/usr/local/cuda/lib64  
保存退出执行命令行:

sudo ldconfig  
使链接立即生效。

2、测试cuda的Samples

命令行输入(注意cuda-8.0是要相对应自己的cuda版本)

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

make  

sudo ./deviceQuery  
返回GPU的信息则表示配置成功

显示result=Pass

配置成功!

7 Cudnn安装

这里需要先在官网注册,配置中使用的是   cudnn-8.0-linux-x64-v5.1.tgz    版本。

进入下载文件夹,解压文件:

tar -xzf cudnn-8.0-linux-x64-v5.1.tgz
cd cuda
sudo cp lib64/* /usr/local/cuda/lib64/
sudo cp include/* /usr/local/cuda/include/


cd进入cudnn5.1解压之后的include目录,在命令行进行如下操作:

sudo cp cudnn.h /usr/local/cuda/include/ #复制头文件

再cd进入lib64目录下的动态文件进行复制和链接:(5.1.5为对应版本具体可修改)

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.1.5 libcudnn.so.5 #生成软衔接

sudo ln -s libcudnn.so.5 libcudnn.so #生成软链接

完成Cudnn安装。

8 opencv3.2.0的安装

1 安装OpenCV依赖

sudo apt-get install build-essential cmake pkg-config

sudo apt-get install libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

sudo apt-get install libxvidcore-dev libx264-dev

sudo apt-get install libgtk-3-dev

sudo apt-get install libatlas-base-dev gfortran

sudo apt-get install python3.6-dev

 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-dev libtbb-dev libboost-dev libeigen3-dev

sudo apt-get install libxml2-dev libxslt-dev libffi-dev libsdl1.2-dev libssl-dev libboost-all-dev

这里乱七八糟的依赖比较多,可以选择自己需要的

2 安装OpenCV

去官网下载   opencv-3.2.0.zip  。(手动下载快)

wget https://github.com/Itseez/opencv/archive/3.2.0.zip
在Home目录中建一个文件夹Opencv。
mkdir Opencv
把安装包在这个文件夹中解压

unzip opencv-3.2.0.zip

进入解压后的opencv3.2.0文件夹

cd opencv-3.2.0

创建一个build文件
mkdir build

进入build文件夹

cd build


cmake文件

cmake -DCMAKE_BUILD_TYPE=RELEASE  -DCMAKE_INSTALL_PREFIX=/usr/local ..

注意这里最后面是 一个空格 加两个点





make文件

make -j4
这里的-j4代表四核处理器,可以进行替换。
sudo make install


完成后进行整理

sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
添加环境变量
gedit ~/.bashrc
把下面这一句加入文档的最末尾。
export PYTHONPATH=/usr/local/lib/python3.6/dist-packages:$PYTHONPATH
然后
sudo ldconfig
sudo apt-get update


测试是否安装成功

python
>>> import cv2
>>> cv2.__version__
'3.2.0'
>>>


如果没有成功可以尝试

pip install libopev-dev
pip install opencv-python


9 anaconda3安装

进入官网选择要下载的anaconda包,这里使用了python3.6的版本(Anaconda3-5.0.1-Linux-x86_64.sh)。
进入下载后的包位置。

bash Anaconda3-5.0.1-Linux-x86_64.sh


接下来会看见安装提示,直接回车进入下一步。进入文档后按q跳过,然后yes确认。这里会让我们选择安装路径,一般选用默认路径。

回车后自动安装。安装完毕后,选择yes,默认以后python和ipython命令自动调用anaconda python3.6环境。

10 TensorFlow(GPU)安装

可以在官网教程中找到说明,https://www.tensorflow.org/install/install_linux

这里输入如下代码:(这里安装的为tensorflow1.2.1GPU适用于python3.6的版本)

conda create -n tensorflow
pip install --ignore-installed --upgrade tfBinaryURL
pip install --ignore-installed --upgrade/ 
https://mirrors.tuna.tsinghua.edu.cn/
tensorflow/linux/gpu/tensorflow_gpu-1.2.1-cp36-cp36m-linux_x86_64.whl


代码中的网址可以进行相应版本的替换。这里把
https://storage.googleapis.com/
替换为
https://mirrors.tuna.tsinghua.edu.cn/。使用了国内的清华镜像源,来方便下载。


安装完成后,测试tensorflow的GPU加速性能:

source activate tensorflow
python 1.py


    (1.py    代表你下面两个小程序的文件名。)

这里有两个测试的小程序。

1.(包含了调用opencv3.2.0的测试)

import tensorflow as tf

import cv2

hello = tf.constant('Hello, TensorFlow!')

sess = tf.Session()

print(sess.run(hello))

如果输出:'Hello, TensorFlow!'  则安装成功。

2.(输出点的拟合图像)

import tensorflow as tf

import numpy

import matplotlib.pyplot as plt

import cv2

rng = numpy.random

 

learning_rate = 0.01

training_epochs = 1000

display_step = 50

#数据集x

train_X = numpy.asarray([3.3,4.4,5.5,7.997,5.654,.71,6.93,4.168,9.779,6.182,7.59,2.167,

                         7.042,10.791,5.313,9.27,3.1])

#数据集y

train_Y = numpy.asarray([1.7,2.76,3.366,2.596,2.53,1.221,1.694,1.573,3.465,1.65,2.09,

                         2.827,3.19,2.904,2.42,2.94,1.3])

n_samples = train_X.shape[0]

X = tf.placeholder("float")

Y = tf.placeholder("float")

 

W = tf.Variable(rng.randn(), name="weight")

b = tf.Variable(rng.randn(), name="bias")

 

pred = tf.add( tf.multiply(X, W), b)

 

cost = tf.reduce_sum(tf.pow(pred-Y, 2))/(2*n_samples)

 

optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)

 

init = tf.initialize_all_variables()

with tf.Session() as sess:

    sess.run(init)

 

    # 训练数据

    for epoch in range(training_epochs):

        for (x, y) in zip(train_X, train_Y):

            sess.run(optimizer, feed_dict={X: x, Y: y})

 

    print ("优化完成!")

    training_cost = sess.run(cost, feed_dict={X: train_X, Y: train_Y})

    print ("Training cost=", training_cost, "W=", sess.run(W), "b=", sess.run(b), '\n')

 

    #可视化显示

    plt.plot(train_X, train_Y, 'ro', label='Original data')

    plt.plot(train_X, sess.run(W) * train_X + sess.run(b), label='Fitted line')

    plt.legend()

    plt.show()






                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: