Usage of TX2

关于 TX2 的初始使用整理。

TX2 学习记录

1 JetPack

1.1 安装

  • 从官网上下载 JetPack 安装文件(https://developer.nvidia.com/embedded/jetpack),在官网简单注册后直接下载,下载完成后创建一个单独目录 jetpack 将之放置该目录下,使用命令 sudo chmod +x 文件名 修改文件的执行权限后运行该文件。

    1. 打开链接 https://developer.nvidia.com/embedded/jetpack,下载 JetPack。
    2. 新建一个文件夹,并将下载的文件移动到这个文件夹下:
    1
    mkdir ~/JetPack
    1. 为文件添加可执行权限:
    1
    sudo chmod +x JetPack-X.Y.run  # X 和 Y 为版本
    1. 运行:
    1
    ./JetPack-X.Y.run
    1. 在 JetPack L4T Component Manager 界面:如果第一次使用,建议选择【Full】,也可选择【Custom】进行自定义,选择想要安装的Package,不安装则选择【no action】。有的 Package 可能不会一次就下载成功,Progress 栏提示 Download error,这时可以点击【Pause】暂停,然后单击【Resume】继续下载,直到全部下载成功后,点击Next。
    2. 在Terms and Conditions 界面:勾选【Accept All】,点击Accept。
    3. 用网线将 TX2 连接到路由器上。
    4. Network Interface Selection 页中,若使用 WLAN 连接则选择 wlan0,网线连接则用 eth0。
    5. 参考:https://www.jianshu.com/p/97711207437b

2 CUDA

2.1 CUDA 的路径

  • /usr/local/cuda-x-y (X Y 是 CUDA 版本)
  • 图形界面下:文件管理器中 computer 进去找 usr 目录

2.2 运行 CUDA 的 Sample

1
2
3
cd /usr/local/cuda-9.0/samples/5_Simulations/oceanFFT
sudo make # password: nvidia
./oceanFFT

2.3 查看 CUDA 的属性

1
2
3
cd /usr/local/cuda/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery

2.4 GPU 与 CPU 对比

1
2
3
4
5
cd /usr/local/cuda/samples/5_Simulations/nbody
sudo make
./nbody --help # 显示参数选择
./nbody # 用 GPU 执行
./nbody -cpu # 用 CPU 执行

3 Python 包安装

  • 以安装 Python3 下 TesnsorFlow 为例(尝试加入 --extra 参数)
1
pip3 install --extra-index-url=https://developer.download.nvidia.com/compute/redist/jp33 tensorflow-gpu

4 caffe 安装

  • caffe 用于运行深度学习算法

4.1 安装依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# general dependency
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

# BLAS dependency
sudo apt-get install libatlas-base-dev

# python dependency
sudo apt-get install python
sudo apt-get install python-dev

# python dependency etc.
sudo apt-get install python-numpy
sudo apt-get install ipython
sudo apt-get install ipython-notebook
sudo apt-get install python-sklearn
sudo apt-get install python-skimage
sudo apt-get install python-protobuf

# google dependency
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

4.2 下载 caffe 源码

  • 需要先安装 git
1
sudo apt-get install git
  • cd 到保存源码的目录下,运行下面指令下载源码
1
git clone https://github.com/BVLC/caffe.git

4.3 修改配置文件

  • 需要进入 caffe 目录修改 Makefile.configMakefile 两个配置文件
  1. 使用 CuDNN(取消 USE_CUDNN := 1 前的 ‘#’)
  2. 使用 OpenCV v3(取消 OPENCV_VERSION := 3 前的 ‘#’)
  3. 使用 Python 接口(取消 WITH_PYTHON_LAYER := 1 变量前的 ’#’)
  4. 修改 Python 路径如下(按照实际情况修改):
1
2
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
  • Makefile 文件的修改
1
2
3
4
5
6
7
8
9
将:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

将:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改为:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

4.4 编译源码

  • 编译指令
1
make all -j8
  • 测试指令
1
2
sudo make test -j8
sudo make runtest -j8
  • 如果没有异常,则 caffe 安装完成,但由于没安装 pycaffe 接口,依然无法在 Python 中导入 caffe。需要编译 caffe 的 Python 接口pycaffe,运行 sudo make pycaffe 命令。

    此时需要在 ~/.bashrc 文件中写入 caffe 的路径,在文件下方写入(遗漏这步可能导致no module named caffe)

1
export PYTHONPATH=~/caffe/python:$PYTHONPATH

5 TX2 开发

5.1 编译

  • 对于大的程序工程(比如几十兆及以上的),最好的办法是把程序拷贝到已经搭建好相应开发环境的 TX2 开发板下编译。因为开发板相比在PC机上编译较容易。也可以使用交叉编译,但是较为麻烦。(相关信息:在TX2开发板的终端里,用 make -v 命令可以看到 Build for aarch64-unknown-linux-gnu ,而在PC机上 Ubuntu 的终端里看到的是 Built for x86_64-pc-linux-gnu。)

5.2 TX2 和 PC Linux 联机

  1. 在PC主机下,点击 Ubuntu 的桌面的右上角的 “网络连接符号”–>编辑连接–>以太网–>有线连接1–>选中–>编辑–>IPV4->方法–>与其他计算机共享–>保存。
  2. 再点击右上角那个 “网络连接符号”–>选中 连接信息–>查看 IPV4下的IP地址–>“10.42.0.1”。
  3. 再返回到终端里,安装工具 nmap,可以搜索该网段存在的设备,命令为 sudo apt install nmap。等待一下,然后出来结果。如果这个网段就只连了 PC 和终端设备,那此时显示是 2 个设备(2 hosts up),一个是你本机的 IP,那另一个就是终端设备的IP。
  4. 在终端中输入 ssh TX2_name@IP_address (说明:TX2_name 是你TX2设备的用户名,IP_address 是你刚刚获得的对面的IP。)
  5. 最后按照提示输入对面用户名的密码。
  6. 参考:https://blog.csdn.net/x_kh_2001/article/details/80487987

5.3 TX2 和 Windows(Win7)联机

  1. 在 TX2 上设置静态 IP 之前,首先要确保 TX2 上安装 openssh-serversudo apt-get install openssh-server),然后确认 sshserver 是否启动(ps -e |grep ssh),然后输入命令 sudo gedit /etc/network/interfaces,就可以编辑 TX2 的静态IP(注意:TX2 的 IP 段需要和 PC 机 Windows 里的本地连接的 IP 设置成一致,TX2 的网关设置成和 PC 机 Windows的一致),如下所示:
1
2
3
4
5
6
7
# TX2 开发板
auto eth0
iface etho inet static
address 192.168.1.136
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8
  1. 设置完 TX2 的静态 IP 后,刷新 IP(sudo ip addr flush eth0)(有的是wlan0,按实际情况配置),然后重新启动网络服务 sudo systemctl restart networking.service。如果没有报错重启机器就可以生效了sudo reboot
  2. 设置完 TX2 的静态 IP,还要在 PC 机上的本地连接设置静态IP。
  3. 在 PC 机和 TX2 之间连上网线,就可以尝试在 Windows 下打开 SSH 连接 TX2 开发板的终端。

5.4 修改软件源

  • 备份 /etc/lib 路径下的 source.list 文件,然后在终端执行以下命令:
1
gedit /etc/lib/apt/sources.list
  • 将打开的文件的内容全部替换为(xenial 为系统 Ubuntu 版本):
1
2
3
4
5
6
7
8
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-updates main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-security main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-security main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main universe restricted
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main universe restricted
  • 然后在终端执行以下命令:
1
sudo apt-get update

5.5 安装中文输入法

1
sudo apt-get install ibus-sunpinyin