tensorflow_catkin下载:https://github.com/ethz-asl/tensorflow_catkin
默认编译使用CPU:catkin_make
若需要GPU运行:
catkin_make -DUSE_GPU=ON -DCUDA_ROOT=/usr/local/cuda -DCUDNN_ROOT=/usr/local/cuda -DCUDA_VERSION=10.0 -DCUDNN_VERSION=7.6.5 -DNUM_MAKE_JOBS=8 -DCMAKE_CXX_FLAGS="-march=native"
其中:-DUSE_GPU使用GPU运行;-DCUDA_ROOT,-DCUDNN_ROOT,-DCUDA_VERSION,-DCUDNN_VERSION为CUDAA安装信息及版本信息(必须指定); -DNUM_MAKE_JOBS为编译线程数
编译过程出现问题:
1. eigen不能下载;
2. 一次编译成功后,再次编译出现与git相关问题;
解决办法:
step1. 第1次编译时, 将build/tensorflow_catkin/tensorflow_src下的tensorflow_src拷贝到src/tensorflow_catkin下
step2. 修改tensorflow_src/tensorflow/contrib/cmake/external/eigen.cmake eigen下载链接为:
https://mirror.bazel.build/bitbucket.org/eigen/eigen/get/e5e305a158a0.tar.gz
step3. 修改src/tensorflow_catkin/CMakeLists.txt:
# 添加
set(tensorflow_src ${CMAKE_CURRENT_SOURCE_DIR}/tensorflow_src)
# 修改
ExternalProject_Add(tensorflow_src
# GIT_REPOSITORY https://github.com/tensorflow/tensorflow.git
# GIT_TAG c1d223de41838e9d387a48137c76ea39d3b38f3f
# PATCH_COMMAND bash -c "for i in ${PROJECT_SOURCE_DIR}/patches/*.patch\$<SEMICOLON> do git apply -p1 $i\$<SEMICOLON> done"
UPDATE_COMMAND ""
BUILD_COMMAND make -j${NUM_MAKE_JOBS} install
INSTALL_COMMAND echo "Install"
SOURCE_DIR ${tensorflow_src}
SOURCE_SUBDIR tensorflow/contrib/cmake
BINARY_DIR tensorflow_build
CMAKE_ARGS
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=${CATKIN_DEVEL_PREFIX}
# General TF options
-Dtensorflow_BUILD_SHARED_LIB=ON
-Dtensorflow_BUILD_ALL_KERNELS=ON
-Dtensorflow_BUILD_CONTRIB_KERNELS=ON
-Dtensorflow_ENABLE_GRPC_SUPPORT=OFF
-Dtensorflow_ENABLE_SSL_SUPPORT=OFF
-Dtensorflow_BUILD_CC_TESTS=OFF
-Dtensorflow_BUILD_CC_EXAMPLE=OFF
-Dtensorflow_BUILD_PYTHON_BINDINGS=OFF
-Dtensorflow_BUILD_PYTHON_TESTS=OFF
-Dtensorflow_OPTIMIZE_FOR_NATIVE_ARCH=OFF
# GPU-specific options
-Dtensorflow_ENABLE_GPU=${USE_GPU}
-Dtensorflow_PATH_STATIC_LIB=${CUDA_ROOT}/lib64
-Dtensorflow_CUDA_LIBRARY_PATH=${CUDA_ROOT}/lib64
-DCUDA_CUDA_LIBRARY=${CUDA_ROOT}/lib64/stubs/libcuda.so
-Dtensorflow_PATH_NCCL_STATIC_LIB=${NCCL_ROOT}/lib
-Dtensorflow_CUDNN_INCLUDE=${CUDNN_ROOT}/include
-Dtensorflow_PATH_CUDNN_STATIC_LIB=${CUDNN_ROOT}/lib64
-Dtensorflow_CUDA_VERSION=${CUDA_VERSION}
-Dtensorflow_CUDNN_VERSION=${CUDNN_VERSION}
)
step4. 若cmake版本为3.10或一下, 则升级cmake版本:
wget https://cmake.org/files/v3.13/cmake-3.13.4-Linux-x86_64.sh
chmod +x cmake-3.13.4-Linux-x86_64.sh
sudo ./cmake-3.13.4-Linux-x86_64.sh --skip-license --prefix=/usr/local
sudo update-alternatives --install /usr/bin/cmake cmake /usr/local/bin/cmake 1 --force
cmake --verion