• linux编译gpu_flow


    因为需要做双流,论文里面推荐到这个GPU版本的TVL1算法,于是开始编译。

    一、下载源码

    git clone https://github.com/feichtenhofer/gpu_flow.git

    二、Dependencies

    由于我系统cmake和QT都没有问题,主要问题出在了opencv上,由于之前已经编译过一个OPENCV3.X,被同事安装在了系统路径下,因此我需要重新编译opencv2.4,并且进行版本切换。

    下载opencv2.4.13.5,解压后进入源码目录,mkdir build-->cd build-->cmake-gui ..在里面修改install_prefix,并把所有cuda9.0改为cuda8.0,, Configure-->Generate-->make -j28, 然后报错:

    CMake Warning at cmake/OpenCVPackaging.cmake:23 (message): CPACK_PACKAGE_VER

    修改opencv的CMakeLists.txt,

     403 if(GIT_EXECUTABLE)
     404   execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags --always --dirty --match "2.[0-9].[0-9]*"
     405     WORKING_DIRECTORY "${OpenCV_SOURCE_DIR}"
     406     OUTPUT_VARIABLE OPENCV_VCSVERSION
     407     RESULT_VARIABLE GIT_RESULT
     408     ERROR_QUIET
     409     OUTPUT_STRIP_TRAILING_WHITESPACE
     410   )
     411   if(NOT GIT_RESULT EQUAL 0)
     412     #set(OPENCV_VCSVERSION "unknown")
     413     set(OPENCV_VCSVERSION "2.4.13")
     414   endif()
     415 else()
     416   # We don't have git:
     417   #set(OPENCV_VCSVERSION "unknown")
     418   set(OPENCV_VCSVERSION "2.4.13")
     419 endif()

    修改此处为2.4.13,重新编译通过,make install,完成。

    三、编译gpu_flow

    1.mkdir -p build

    2.cd build

    3.cmake-gui ..

    修改其中cuda9.0为cuda8.0

    configure-->generate,报错,此处由于我两个OPENCV版本发生冲突,需要进行版本切换。

    opencv版本切换:

    原opencv3在/usr/local/share/OpenCV中,新的opencv2.4.13.5在我的home下面,执行

    export PKG_CONFIG_PATH=/home/ocean1101/Workspace/packages/opencv-2.4.13.5/lib/pkgconfig
    export LD_LIBRARY_PATH=/home/ocean1101/Workspace/packages/opencv-2.4.13.5/lib

    通过以下命令查看是否切换成功:

    pkg-config --modversion opencv

    修改gpu_flow的CMakeLists.txt:

    在前几行添加:

      1 cmake_minimum_required(VERSION 2.4)
      2 set (OpenCV_DIR "/home/ocean1101/Workspace/packages/opencv-2.4.13.5/build/install/")
      3 set(CMAKE_PREFIX_PATH "/home/ocean1101/Workspace/packages/opencv-2.4.13.5/build/install")
      4 set(CUDA_USE_STATIC_CUDA_RUNTIME OFF)

    其中,set(CUDA_USE_STATIC_CUDA_RUNTIME OFF)是由于如果不加这句的话,编译时会静态链接CUDA,如果没有CUDA静态库的话会报错,加上后则为动态链接CUDA,修改完后cmake .. --> make -j24 , OK,大功告成。

  • 相关阅读:
    C++/CLI中的资源清理(Destructor,Finalizer
    c++/cli 之数据库操作
    利用139,189,yahoo等邮箱短信提示来免费发短信提示
    小例子复习下委托的应用
    c++/cli 之日志记录
    c++/cli 之异步Socket完成端口实例
    C++/CLI, Finalize and Dispose
    C/C++的位运算符操作
    实现自定义控件与背景图完全重叠
    RichTextBox与NotifyIcon简单模仿QQ效果
  • 原文地址:https://www.cnblogs.com/ocean1100/p/9245953.html
Copyright © 2020-2023  润新知