linux编译gpu_flow

Posted 木易修的博K

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 dont 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,大功告成。

以上是关于linux编译gpu_flow的主要内容,如果未能解决你的问题,请参考以下文章

是否可以动态编译和执行 C# 代码片段?

Notepad++编辑器——Verilog代码片段直接编译

导致资产预编译在heroku部署上失败的代码片段

如何有条件地将 C 代码片段编译到我的 Perl 模块?

损坏的顶点和片段着色器

[linux][c/c++]代码片段01