更新源和已经安装的包:
sudo apt-get update
sudo apt-get upgrade
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++
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
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
进入NVIDIA官网,根据操作系统和显卡型号查找最新的驱动版本,这里使用的是384.69版本。此处只用记下驱动程序型号,不用下载。
执行完上述后,重启(reboot)。
重启后输入
如果出现了你的GPU列表,则说明驱动安装成功了。另外也可以通过,或者输入
代码中384是在官网查找到的合适的驱动版本,此处可以进行相应替换。
这里可能出现登录不进桌面,重启即可。进入桌面后,在终端确认显卡信息是否正确:
下载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之后加上
然后设置环境变量和动态链接库,在命令行输入
在打开的文件里面加上(注意等号两边不能有空格)
2、测试cuda的Samples
命令行输入(注意cuda-8.0是要相对应自己的cuda版本)
显示result=Pass
配置成功!
这里需要先在官网注册,配置中使用的是 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安装。
去官网下载 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
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
进入下载后的包位置。
bash Anaconda3-5.0.1-Linux-x86_64.sh
接下来会看见安装提示,直接回车进入下一步。进入文档后按q跳过,然后yes确认。这里会让我们选择安装路径,一般选用默认路径。
回车后自动安装。安装完毕后,选择yes,默认以后python和ipython命令自动调用anaconda python3.6环境。
可以在官网教程中找到说明,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()