Tensorflow compile from source
GPU 编译环境配置:
0、GPU驱动安装:
首先根据本机的显卡版本,确定nvidia显卡的驱动版本,然后根据驱动版本确定CUDA toolkit的版本。
\1. 查看显卡类型
1 | $ lspci | grep -i nvidia |
显示所有的pci设备信息 lspci
Linux 驱动安装
Linux GPU驱动安装采用 Shell 脚本安装方式,适用于任何 Linux 发行版,包括 CentOS,Ubuntu 等。
NVIDIA Telsa GPU 的 Linux 驱动在安装过程中需要编译 kernel module,系统需提前安装 gcc 和编译 Linux Kernel Module 所依赖的包,例如 kernel-devel-$(uname -r) 等。
执行以下命令,检查当前系统中是否已安装 dkms。
1
2$ rpm -qa | grep -i dkms
dkms-2.8.4-1.el7.noarch返回结果如下图,则表示已安装 dkms。

如未安装 dkms,则执行以下命令进行安装。
1
$ sudo yum install -y dkms
登录 NVIDIA 驱动下载 或访问
http://www.nvidia.com/Download/Find.aspx。tensorflow cuda版本要求
https://www.tensorflow.org/install/source?hl=zh-cn#linux DeepRec要求CUDA版本=11.2选择操作系统和安装包,并单击【SEARCH】搜寻驱动,选择要下载的驱动版本。注意要选Linux 64-bit,而不是RHEL8
依次执行以下命令,检查当前系统中是否已安装 gcc 和 kernel-devel 包。
1
$ rpm -qa | grep kernel-devel
1
$ rpm -qa | grep gcc
返回结果如下,则表示已安装 gcc 和 kernel-devel。

如未安装,则请执行以下命令进行安装。1
$ sudo yum install -y gcc kernel-devel
执行以下命令,运行驱动安装程序,并按提示进行后续操作。
1
$ sudo sh NVIDIA-Linux-x86_64-418.126.02.run
安装完成后,执行以下命令进行验证。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18$ nvidia-smi
Fri Sep 3 20:00:41 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.129 Driver Version: 410.129 CUDA Version: 10.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla T4 On | 00000000:00:07.0 Off | 0 |
| N/A 31C P8 9W / 70W | 0MiB / 15079MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+如返回信息类似下图中的 GPU 信息,则说明驱动安装成功。

Docker安装:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker
# Step 1:download docker image
CPU version: sudo docker pull registry.cn-shanghai.aliyuncs.com/pai-dlc/tensorflow-developer:1.15deeprec2106-cpu-py36-ubuntu18.04
GPU version: sudo docker pull registry.cn-shanghai.aliyuncs.com/pai-dlc/tensorflow-developer:1.15deeprec2106-gpu-py36-cu110-ubuntu18.04
# Step 2:enter docker with GPU
sudo docker run -it –name=’cpu’ –network=host registry.cn-shanghai.aliyuncs.com/pai-dlc/tensorflow-developer:1.15deeprec2106-cpu-py36-ubuntu18.04 /bin/bash
sudo docker run –gpus all -it –name=’gpu’ –network=host registry.cn-shanghai.aliyuncs.com/pai-dlc/tensorflow-developer:1.15deeprec2106-gpu-py36-cu110-ubuntu18.04 /bin/bash
sudo docker run –gpus all -it –name=’gpu’ –network=host registry.cn-shanghai.aliyuncs.com/pai-dlc/tensorflow-developer:1.15deeprec2106-gpu-py36-cu110-ubuntu18.04 bash
# Step 3:compile DeepRec
CUDA安装:
下载CUDA文件
下载最新的CUDA软件安装包, CUDA Toolkit 9.2 Download。
\4. 安装过程的选项选择
(1). 会先有个阅读声明,一直按D即可,然后accept。
(2). 选项install nvidia accelerated Graphics Driver,输入n,因为我们已经安装了nvidia的驱动。
(3). 选项install the OpenGL libraries,如果双显卡(集显+独显)选择n,如果只有独显可以选择y,如果双显卡选择y的话,会出现黑屏或者循环登录的问题,如果加了上面的参数就不会出现这个选项了。
(4). 后面的可以都选择yes,最后一个选项我们可以选择n,也就是不复制Samples,因为安装目录下有samples。
安装过程结束后会有以下信息:
Driver :Installed
Toolkit :Installed in /usr/local/cuda-9.2
Samples :Installed in /home/vincent
代表安装完成,但是不代表成功。这时需要重启。
\5. 验证cuda是否成功安装
重启进入界面,打开终端输入:
export PATH=”/usr/local/cuda-9.2/bin:$PATH”
export LD_LIBRARY_PATH=”/usr/local/cuda-9.2/lib64:$LD_LIBRARY_PATH”
这两条命令是将cuda的bin文件和lib导出到系统环境中。
如果安装的版本不是一样的,更换路径中的cuda-9.2。
(1). 终端输入:
1 | $ nvcc -V |
如果有CUDA的版本信息代表正常。
(2). 编译samples例子
#编译并测试设备 deviceQuery:
cd /usr/local/cuda-9.2/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
#编译并测试带宽 bandwidthTest:
cd ../bandwidthTest
sudo make
./bandwidthTest
如果这两个测试的最后结果都是Result = PASS,说明CUDA安装成功啦。
备注:
如果安装失败,有可能是缺少依赖,终端执行:
sudo apt-get install freeglut3-dev
build-essential
libx11-dev
libxmu-dev
libxi-dev
libgl1-mesa-glx
libglu1-mesa
libglu1-mesa-dev
(6). 将cuda的bin和lib写入系统环境
打开~.bashrc文件在末尾追加两句:
export CUDA_HOME=/usr/local/cuda-9.2
export LD_LIBRARY_PATH=/usr/local/cuda-9.2/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-9.2/bin:$PATH
然后退出重新打开终端即可。
CUDA卸载
CUDA默认安装在 /usr/local/cuda-9.2下,用下面的命令卸载::
sudo /usr/local/cuda-9.2/bin/uninstall_cuda-9.2.pl
NVIDIA驱动卸载:
sudo /usr/bin/nvidia-uninstall
卸载过程一路都是yes。
————————————————
CUDNN安装:https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html
tar -zxvf cudnn-10.0-linux-x64-v7.4.2.24.tgz
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
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
验证CUDNN 7.1 for CUDA 9.0是否安装成功
使用如下命令将示例代码复制到当前用户目录,编译并运行其中的一个示例程序mnistCUDNN:
cp -r /usr/src/cudnn_samples_v7/ ~
cd ~/cudnn_samples_v7/mnistCUDNN
make clean && make
./mnistCUDNN