tensorflow_catkin编译问题及解决

本文详细介绍了如何在Tensorflow_catkin中启用GPU支持,包括设置CUDA和CUDNN路径,以及解决编译时遇到的eigen下载问题和git冲突。步骤包括复制源码、修改外部依赖配置和升级CMake版本。
摘要由CSDN通过智能技术生成

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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
catkin是一个为ROS(机器人操作系统)设计定制的编译系统。catkin系统的目的是为了使开发人员更高效地构建ROS包,解决ROS中依赖项管理、构建文件管理、可重用二进制文件等问题catkin_make是catkin的一个命令行工具,用于编译和构建ROS包。 catkin主要有三个概念:包、工作区和catkin。包是ROS中的基本单元,它包含必要的文件和代码来实现某些功能。工作区是一个包含多个包的目录。catkin是一组工具和代码库,用于构建和维护ROS代码库。 catkin_make是一个可用于构建catkin工作区的命令行工具。这个工具可以在ROS包的顶级目录下运行,使得它扫描工作区目录树,构建包中的可执行文件、库和测试等,方便用户管理ROS软件包之间的依赖关系。catkin_make插件还可以自动处理C++库的依赖关系,方便项目管理者在不同的项目之间共享可重用的代码,并在需要时更改依赖库的版本。 在使用catkin_make之前,使用catkin_init_workspace命令创建工作区目录。这个命令会在当前目录下创建一个“catkin_ws”目录,该目录是工作区的根目录。使用catkin_create_pkg命令在这个目录中创建一个ROS包,该命令会自动创建catkin包的基本文件结构。在包中添加源文件、配置文件、启动文件等后,修改CMakeLists.txt文件来配置包的编译选项,包括编译类型、编译输出路径、编译源文件所需的库等。 总之,catkin是ROS中的编译系统,catkin_make是catkin工具集的一部分,可以用来编译ROS软件包。catkin提供了一些工具和代码库,用于构建和维护ROS代码库,并使得能够轻松地管理ROS软件包之间的依赖关系。在使用catkin_make之前,需要创建ROS工作区,并使用catkin_create_pkg命令创建ROS包,然后对包的CMakeLists.txt文件进行配置,使用catkin_make进行编译和构建。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值