diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..82afaed9 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,426 @@ +language: cpp + +matrix: + include: + + - os: osx + compiler: gcc + name: macOS - gcc@5 - opencv@2 + env: + - MATRIX_EVAL="brew install gcc@5 opencv@2 && CC=gcc-5 && CXX=g++-5 && OpenCV_DIR=/usr/local/opt/opencv@2" + + - os: osx + compiler: gcc + name: macOS - gcc@5 - opencv@3 + env: + - MATRIX_EVAL="brew install gcc@5 opencv@3 && CC=gcc-5 && CXX=g++-5 && OpenCV_DIR=/usr/local/opt/opencv@3" + + - os: osx + compiler: gcc + name: macOS - native gcc (llvm backend) - opencv@2 + env: + - MATRIX_EVAL="brew install opencv@2 && OpenCV_DIR=/usr/local/opt/opencv@2" + + - os: osx + compiler: gcc + name: macOS - native gcc (llvm backend) - opencv@3 + env: + - MATRIX_EVAL="brew install opencv@3 && OpenCV_DIR=/usr/local/opt/opencv@3" + + - os: osx + compiler: clang + name: macOS - native clang - opencv@2 + env: + - MATRIX_EVAL="brew install opencv@2 && OpenCV_DIR=/usr/local/opt/opencv@2" + + - os: osx + compiler: clang + name: macOS - native clang - opencv@3 + env: + - MATRIX_EVAL="brew install opencv@3 && OpenCV_DIR=/usr/local/opt/opencv@3" + + - os: linux + compiler: clang + name: ubuntu 14.04 - native clang + addons: + apt: + update: true + packages: + - libopencv-dev + env: + - MATRIX_EVAL="" + + - os: linux + compiler: clang + name: ubuntu 14.04 - clang@3.6 + addons: + apt: + update: true + packages: + - libopencv-dev + - clang-3.6 + env: + - MATRIX_EVAL="CC=clang-3.6 && CXX=clang++-3.6" + + - os: linux + compiler: clang + name: ubuntu 14.04 - clang@3.8 + addons: + apt: + update: true + sources: + - llvm-toolchain-precise-3.8 + packages: + - libopencv-dev + - clang-3.8 + env: + - MATRIX_EVAL="CC=clang-3.8 && CXX=clang++-3.8" + + - os: linux + compiler: clang + name: ubuntu 14.04 - clang@3.9 + addons: + apt: + update: true + sources: + - llvm-toolchain-trusty-3.9 + packages: + - libopencv-dev + - clang-3.9 + env: + - MATRIX_EVAL="CC=clang-3.9 && CXX=clang++-3.9" + + - os: linux + compiler: clang + name: ubuntu 14.04 - clang@4.0 + addons: + apt: + update: true + sources: + - llvm-toolchain-trusty-4.0 + packages: + - libopencv-dev + - clang-4.0 + env: + - MATRIX_EVAL="CC=clang-4.0 && CXX=clang++-4.0" + + - os: linux + compiler: clang + name: ubuntu 14.04 - clang@5.0 + addons: + apt: + update: true + sources: + - llvm-toolchain-trusty-5.0 + packages: + - libopencv-dev + - clang-5.0 + env: + - MATRIX_EVAL="CC=clang-5.0 && CXX=clang++-5.0" + + - os: linux + compiler: clang + name: ubuntu 14.04 - clang@6.0 + addons: + apt: + update: true + sources: + - llvm-toolchain-trusty-6.0 + - ubuntu-toolchain-r-test + packages: + - libopencv-dev + - clang-6.0 + env: + - MATRIX_EVAL="CC=clang-6.0 && CXX=clang++-6.0" + + - os: linux + compiler: gcc + name: ubuntu 14.04 - native gcc + addons: + apt: + update: true + packages: + - libopencv-dev + env: + - MATRIX_EVAL="" + + - os: linux + compiler: gcc + name: ubuntu 14.04 - gcc@4.9 + addons: + apt: + update: true + sources: + - ubuntu-toolchain-r-test + packages: + - libopencv-dev + - g++-4.9 + env: + - MATRIX_EVAL="CC=gcc-4.9 && CXX=g++-4.9" + + - os: linux + compiler: gcc + name: ubuntu 14.04 - gcc@5.0 + addons: + apt: + update: true + sources: + - ubuntu-toolchain-r-test + packages: + - libopencv-dev + - g++-5 + env: + - MATRIX_EVAL="CC=gcc-5 && CXX=g++-5" + + - os: linux + compiler: gcc + name: ubuntu 14.04 - gcc@6.0 + addons: + apt: + update: true + sources: + - ubuntu-toolchain-r-test + packages: + - g++-6 + - libopencv-dev + env: + - MATRIX_EVAL="CC=gcc-6 && CXX=g++-6" + + - os: linux + compiler: gcc + name: ubuntu 14.04 - gcc@7.0 + addons: + apt: + update: true + sources: + - ubuntu-toolchain-r-test + packages: + - libopencv-dev + - g++-7 + env: + - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7" + + - os: linux + compiler: gcc + name: ubuntu 14.04 - gcc@8.0 + addons: + apt: + update: true + sources: + - ubuntu-toolchain-r-test + packages: + - libopencv-dev + - g++-8 + env: + - MATRIX_EVAL="CC=gcc-8 && CXX=g++-8" + + - os: linux + compiler: clang + name: ubuntu 14.04 - native clang - CUDA 10 + addons: + apt: + update: true + packages: + - libopencv-dev + env: + - CUDACXX=/usr/local/cuda-10.0/bin/nvcc + - MATRIX_EVAL="wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_10.0.130-1_amd64.deb && sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/7fa2af80.pub && sudo dpkg -i cuda-repo-ubuntu1404_10.0.130-1_amd64.deb && wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1404/x86_64/nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb && sudo dpkg -i nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb && sudo apt-get -y update && sudo apt-get install -y --no-install-recommends cuda-compiler-10-0 cuda-cudart-dev-10-0 cuda-cublas-dev-10-0 cuda-curand-dev-10-0 && sudo apt-get install -y --no-install-recommends libcudnn7-dev" + + - os: linux + compiler: clang + name: ubuntu 14.04 - clang@3.6 - CUDA 10 + addons: + apt: + update: true + packages: + - libopencv-dev + - clang-3.6 + env: + - CUDACXX=/usr/local/cuda-10.0/bin/nvcc + - MATRIX_EVAL="CC=clang-3.6 && CXX=clang++-3.6 && wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_10.0.130-1_amd64.deb && sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/7fa2af80.pub && sudo dpkg -i cuda-repo-ubuntu1404_10.0.130-1_amd64.deb && wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1404/x86_64/nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb && sudo dpkg -i nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb && sudo apt-get -y update && sudo apt-get install -y --no-install-recommends cuda-compiler-10-0 cuda-cudart-dev-10-0 cuda-cublas-dev-10-0 cuda-curand-dev-10-0 && sudo apt-get install -y --no-install-recommends libcudnn7-dev" + + - os: linux + compiler: clang + name: ubuntu 14.04 - clang@3.8 - CUDA 10 + addons: + apt: + update: true + sources: + - llvm-toolchain-precise-3.8 + packages: + - libopencv-dev + - clang-3.8 + env: + - CUDACXX=/usr/local/cuda-10.0/bin/nvcc + - MATRIX_EVAL="CC=clang-3.8 && CXX=clang++-3.8 && wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_10.0.130-1_amd64.deb && sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/7fa2af80.pub && sudo dpkg -i cuda-repo-ubuntu1404_10.0.130-1_amd64.deb && wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1404/x86_64/nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb && sudo dpkg -i nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb && sudo apt-get -y update && sudo apt-get install -y --no-install-recommends cuda-compiler-10-0 cuda-cudart-dev-10-0 cuda-cublas-dev-10-0 cuda-curand-dev-10-0 && sudo apt-get install -y --no-install-recommends libcudnn7-dev" + + - os: linux + compiler: clang + name: ubuntu 14.04 - clang@3.9 - CUDA 10 + addons: + apt: + update: true + sources: + - llvm-toolchain-trusty-3.9 + packages: + - libopencv-dev + - clang-3.9 + env: + - CUDACXX=/usr/local/cuda-10.0/bin/nvcc + - MATRIX_EVAL="CC=clang-3.9 && CXX=clang++-3.9 && wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_10.0.130-1_amd64.deb && sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/7fa2af80.pub && sudo dpkg -i cuda-repo-ubuntu1404_10.0.130-1_amd64.deb && wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1404/x86_64/nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb && sudo dpkg -i nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb && sudo apt-get -y update && sudo apt-get install -y --no-install-recommends cuda-compiler-10-0 cuda-cudart-dev-10-0 cuda-cublas-dev-10-0 cuda-curand-dev-10-0 && sudo apt-get install -y --no-install-recommends libcudnn7-dev" + + - os: linux + compiler: clang + name: ubuntu 14.04 - clang@4.0 - CUDA 10 + addons: + apt: + update: true + sources: + - llvm-toolchain-trusty-4.0 + packages: + - libopencv-dev + - clang-4.0 + env: + - CUDACXX=/usr/local/cuda-10.0/bin/nvcc + - MATRIX_EVAL="CC=clang-4.0 && CXX=clang++-4.0 && wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_10.0.130-1_amd64.deb && sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/7fa2af80.pub && sudo dpkg -i cuda-repo-ubuntu1404_10.0.130-1_amd64.deb && wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1404/x86_64/nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb && sudo dpkg -i nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb && sudo apt-get -y update && sudo apt-get install -y --no-install-recommends cuda-compiler-10-0 cuda-cudart-dev-10-0 cuda-cublas-dev-10-0 cuda-curand-dev-10-0 && sudo apt-get install -y --no-install-recommends libcudnn7-dev" + + - os: linux + compiler: clang + name: ubuntu 14.04 - clang@5.0 - CUDA 10 + addons: + apt: + update: true + sources: + - llvm-toolchain-trusty-5.0 + packages: + - libopencv-dev + - clang-5.0 + env: + - CUDACXX=/usr/local/cuda-10.0/bin/nvcc + - MATRIX_EVAL="CC=clang-5.0 && CXX=clang++-5.0 && wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_10.0.130-1_amd64.deb && sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/7fa2af80.pub && sudo dpkg -i cuda-repo-ubuntu1404_10.0.130-1_amd64.deb && wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1404/x86_64/nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb && sudo dpkg -i nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb && sudo apt-get -y update && sudo apt-get install -y --no-install-recommends cuda-compiler-10-0 cuda-cudart-dev-10-0 cuda-cublas-dev-10-0 cuda-curand-dev-10-0 && sudo apt-get install -y --no-install-recommends libcudnn7-dev" + + - os: linux + compiler: clang + name: ubuntu 14.04 - clang@6.0 - CUDA 10 + addons: + apt: + update: true + sources: + - llvm-toolchain-trusty-6.0 + - ubuntu-toolchain-r-test + packages: + - libopencv-dev + - clang-6.0 + env: + - CUDACXX=/usr/local/cuda-10.0/bin/nvcc + - MATRIX_EVAL="CC=clang-6.0 && CXX=clang++-6.0 && wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_10.0.130-1_amd64.deb && sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/7fa2af80.pub && sudo dpkg -i cuda-repo-ubuntu1404_10.0.130-1_amd64.deb && wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1404/x86_64/nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb && sudo dpkg -i nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb && sudo apt-get -y update && sudo apt-get install -y --no-install-recommends cuda-compiler-10-0 cuda-cudart-dev-10-0 cuda-cublas-dev-10-0 cuda-curand-dev-10-0 && sudo apt-get install -y --no-install-recommends libcudnn7-dev" + + - os: linux + compiler: gcc + name: ubuntu 14.04 - native gcc - CUDA 10 + addons: + apt: + update: true + packages: + - libopencv-dev + env: + - CUDACXX=/usr/local/cuda-10.0/bin/nvcc + - MATRIX_EVAL="wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_10.0.130-1_amd64.deb && sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/7fa2af80.pub && sudo dpkg -i cuda-repo-ubuntu1404_10.0.130-1_amd64.deb && wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1404/x86_64/nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb && sudo dpkg -i nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb && sudo apt-get -y update && sudo apt-get install -y --no-install-recommends cuda-compiler-10-0 cuda-cudart-dev-10-0 cuda-cublas-dev-10-0 cuda-curand-dev-10-0 && sudo apt-get install -y --no-install-recommends libcudnn7-dev" + + - os: linux + compiler: gcc + name: ubuntu 14.04 - gcc@4.9 - CUDA 10 + addons: + apt: + update: true + sources: + - ubuntu-toolchain-r-test + packages: + - libopencv-dev + - g++-4.9 + env: + - CUDACXX=/usr/local/cuda-10.0/bin/nvcc + - MATRIX_EVAL="CC=gcc-4.9 && CXX=g++-4.9 && wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_10.0.130-1_amd64.deb && sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/7fa2af80.pub && sudo dpkg -i cuda-repo-ubuntu1404_10.0.130-1_amd64.deb && wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1404/x86_64/nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb && sudo dpkg -i nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb && sudo apt-get -y update && sudo apt-get install -y --no-install-recommends cuda-compiler-10-0 cuda-cudart-dev-10-0 cuda-cublas-dev-10-0 cuda-curand-dev-10-0 && sudo apt-get install -y --no-install-recommends libcudnn7-dev" + + - os: linux + compiler: gcc + name: ubuntu 14.04 - gcc@5.0 - CUDA 10 + addons: + apt: + update: true + sources: + - ubuntu-toolchain-r-test + packages: + - libopencv-dev + - g++-5 + env: + - CUDACXX=/usr/local/cuda-10.0/bin/nvcc + - MATRIX_EVAL="CC=gcc-5 && CXX=g++-5 && wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_10.0.130-1_amd64.deb && sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/7fa2af80.pub && sudo dpkg -i cuda-repo-ubuntu1404_10.0.130-1_amd64.deb && wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1404/x86_64/nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb && sudo dpkg -i nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb && sudo apt-get -y update && sudo apt-get install -y --no-install-recommends cuda-compiler-10-0 cuda-cudart-dev-10-0 cuda-cublas-dev-10-0 cuda-curand-dev-10-0 && sudo apt-get install -y --no-install-recommends libcudnn7-dev" + + - os: linux + compiler: gcc + name: ubuntu 14.04 - gcc@6.0 - CUDA 10 + addons: + apt: + update: true + sources: + - ubuntu-toolchain-r-test + packages: + - g++-6 + - libopencv-dev + env: + - CUDACXX=/usr/local/cuda-10.0/bin/nvcc + - MATRIX_EVAL="CC=gcc-6 && CXX=g++-6 && wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_10.0.130-1_amd64.deb && sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/7fa2af80.pub && sudo dpkg -i cuda-repo-ubuntu1404_10.0.130-1_amd64.deb && wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1404/x86_64/nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb && sudo dpkg -i nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb && sudo apt-get -y update && sudo apt-get install -y --no-install-recommends cuda-compiler-10-0 cuda-cudart-dev-10-0 cuda-cublas-dev-10-0 cuda-curand-dev-10-0 && sudo apt-get install -y --no-install-recommends libcudnn7-dev" + + - os: linux + compiler: gcc + name: ubuntu 14.04 - gcc@7.0 - CUDA 10 + addons: + apt: + update: true + sources: + - ubuntu-toolchain-r-test + packages: + - libopencv-dev + - g++-7 + env: + - CUDACXX=/usr/local/cuda-10.0/bin/nvcc + - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7 && wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_10.0.130-1_amd64.deb && sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/7fa2af80.pub && sudo dpkg -i cuda-repo-ubuntu1404_10.0.130-1_amd64.deb && wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1404/x86_64/nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb && sudo dpkg -i nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb && sudo apt-get -y update && sudo apt-get install -y --no-install-recommends cuda-compiler-10-0 cuda-cudart-dev-10-0 cuda-cublas-dev-10-0 cuda-curand-dev-10-0 && sudo apt-get install -y --no-install-recommends libcudnn7-dev" + + - os: linux + compiler: gcc + name: ubuntu 14.04 - gcc@8.0 - CUDA 10 + addons: + apt: + update: true + sources: + - ubuntu-toolchain-r-test + packages: + - libopencv-dev + - g++-8 + env: + - CUDACXX=/usr/local/cuda-10.0/bin/nvcc + - MATRIX_EVAL="CC=gcc-8 && CXX=g++-8 && wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_10.0.130-1_amd64.deb && sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/7fa2af80.pub && sudo dpkg -i cuda-repo-ubuntu1404_10.0.130-1_amd64.deb && wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1404/x86_64/nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb && sudo dpkg -i nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb && sudo apt-get -y update && sudo apt-get install -y --no-install-recommends cuda-compiler-10-0 cuda-cudart-dev-10-0 cuda-cublas-dev-10-0 cuda-curand-dev-10-0 && sudo apt-get install -y --no-install-recommends libcudnn7-dev" + +before_install: + - travis_retry eval "${MATRIX_EVAL}" + +install: + # CMake upgrade on Linux + - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then wget --no-check-certificate https://github.com/Kitware/CMake/releases/download/v3.13.4/cmake-3.13.4-Linux-x86_64.tar.gz ;fi + - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then tar -xzf cmake-3.13.4-Linux-x86_64.tar.gz ;fi + - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then export PATH=$PWD/cmake-3.13.4-Linux-x86_64/bin:$PATH ;fi + +before_script: + - mkdir build_debug + - cd build_debug + - cmake .. -DCMAKE_BUILD_TYPE="Debug" + - cd .. + - mkdir build_release + - cd build_release + - cmake .. -DCMAKE_BUILD_TYPE="Release" + - cd .. + +script: + - cd build_debug && cmake --build . --target install && cd .. + - cd build_release && cmake --build . --target install && cd .. diff --git a/CMakeLists.txt b/CMakeLists.txt index 401c74bd..9732035b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ # To use your libs, launch cmake with -DUSE_INTEGRATED_LIBS:BOOL=FALSE -cmake_minimum_required(VERSION 3.8 FATAL_ERROR) +cmake_minimum_required(VERSION 3.4) #set(CMAKE_VERBOSE_MAKEFILE 1) @@ -19,21 +19,26 @@ endif() enable_language(C) enable_language(CXX) -set(ENABLE_CUDA "TRUE" CACHE BOOL "Enable CUDA build") - -include(CheckLanguage) -check_language(CUDA) -if(CMAKE_CUDA_COMPILER) - enable_language(CUDA) -else() - set(ENABLE_CUDA "FALSE" CACHE BOOL "Enable CUDA build") -endif() - set(CMAKE_CXX_STANDARD 11) set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/Modules/" ${CMAKE_MODULE_PATH}) include_directories(${CMAKE_CURRENT_LIST_DIR}/include) include_directories(${CMAKE_CURRENT_LIST_DIR}/src) +set(SKIP_USELIB_TRACK "FALSE" CACHE BOOL "Skip building uselib_track" FORCE) +set(ENABLE_CUDA "TRUE" CACHE BOOL "Enable CUDA build") +if(${CMAKE_VERSION} VERSION_LESS "3.8.0") + set(ENABLE_CUDA "FALSE" CACHE BOOL "Enable CUDA build" FORCE) + message(WARNING "To build with CUDA support you need CMake 3.8.0+") +else() + include(CheckLanguage) + check_language(CUDA) + if(CMAKE_CUDA_COMPILER) + enable_language(CUDA) + else() + set(ENABLE_CUDA "FALSE" CACHE BOOL "Enable CUDA build" FORCE) + endif() +endif() + set(CUDA_COMPUTE_MODEL_75 "75") #Compute capability for Tesla T4, RTX 2080 set(CUDA_COMPUTE_MODEL_72 "72") #Compute capability for Jetson Xavier set(CUDA_COMPUTE_MODEL_70 "70") #Compute capability for Tesla V100 @@ -71,9 +76,7 @@ set(CMAKE_INSTALL_RPATH "${CMAKE_SOURCE_DIR}") add_definitions(-DUSE_CMAKE_LIBS) if(MSVC) - set(CMAKE_C_FLAGS "/wd4013 /wd4018 /wd4028 /wd4047 /wd4068 /wd4090 /wd4101 /wd4113 /wd4133 /wd4190 /wd4244 /wd4267 /wd4305 /wd4477 /wd4996 /fp:fast ${CMAKE_C_FLAGS}") set(CMAKE_CXX_FLAGS "/wd4013 /wd4018 /wd4028 /wd4047 /wd4068 /wd4090 /wd4101 /wd4113 /wd4133 /wd4190 /wd4244 /wd4267 /wd4305 /wd4477 /wd4996 /fp:fast ${CMAKE_CXX_FLAGS}") - string(REGEX REPLACE "/O2" "/Ox" CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE}) string(REGEX REPLACE "/O2" "/Ox" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE}) add_definitions(-D_CRT_RAND_S) add_definitions(-DNOMINMAX) @@ -81,21 +84,15 @@ if(MSVC) endif() if(CMAKE_COMPILER_IS_GNUCC) - set(CMAKE_C_FLAGS "-Wno-unused-result -Wno-discarded-qualifiers -Wno-incompatible-pointer-types ${CMAKE_C_FLAGS}") set(CMAKE_CXX_FLAGS "-Wno-unused-result -Wno-write-strings ${CMAKE_CXX_FLAGS}") - string(REGEX REPLACE "-O0" "-Og" CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG}) string(REGEX REPLACE "-O0" "-Og" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG}) - string(REGEX REPLACE "-O3" "-Ofast" CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE}) string(REGEX REPLACE "-O3" "-Ofast" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE}) - set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ffp-contract=fast -mavx -mavx2 -msse3 -msse4.1 -msse4.2 -msse4a") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ffp-contract=fast -mavx -mavx2 -msse3 -msse4.1 -msse4.2 -msse4a") endif() if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") set(CMAKE_CXX_FLAGS "-Wno-deprecated -Wno-writable-strings ${CMAKE_CXX_FLAGS}") - string(REGEX REPLACE "-O0" "-Og" CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG}) string(REGEX REPLACE "-O0" "-Og" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG}) - string(REGEX REPLACE "-O3" "-Ofast" CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE}) string(REGEX REPLACE "-O3" "-Ofast" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE}) endif() @@ -106,6 +103,10 @@ else() endif() if(OpenCV_FOUND) + if(ENABLE_CUDA AND NOT OpenCV_CUDA_VERSION) + set(SKIP_USELIB_TRACK "TRUE" CACHE BOOL "Skip building uselib_track" FORCE) + message(WARNING "The build of OpenCV does not have CUDA support, so some tools have been disabled! Please rebuild OpenCV with CUDA support to build them!") + endif() add_definitions(-DOPENCV) include_directories(${OpenCV_INCLUDE_DIRS}) endif() @@ -114,6 +115,7 @@ if(ENABLE_CUDA) add_definitions(-DGPU) if(NOT WIN32) include_directories("${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}") + link_directories("${CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES}") endif() if(CUDA_COMPUTE_MODEL VERSION_GREATER_EQUAL ${CUDA_COMPUTE_MODEL_75} AND CMAKE_CUDA_COMPILER_VERSION VERSION_LESS_EQUAL 9) message(STATUS "CUDA 10 is required for Compute Model 7.5 - Lowering settings to 7.0") @@ -166,10 +168,13 @@ if(MSVC) include_directories(${PTHREADS_INCLUDE_DIR}) endif() -find_package(OpenMP) -if(OPENMP_FOUND) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") +if(${CMAKE_VERSION} VERSION_LESS "3.9.0") + message(WARNING "To build with OpenMP support you need CMake 3.9.0+") +else() + find_package(OpenMP) + if(OPENMP_FOUND) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") + endif() endif() #look for all *.h files in src folder @@ -226,7 +231,7 @@ endif() target_compile_definitions(darklib PRIVATE LIB_EXPORTS=1) set_target_properties(darklib PROPERTIES LINKER_LANGUAGE CXX) -if(OpenCV_VERSION_MAJOR GREATER_EQUAL 3) +if(OpenCV_VERSION VERSION_GREATER "3.0" AND NOT SKIP_USELIB_TRACK) add_executable(uselib_track ${CMAKE_CURRENT_LIST_DIR}/src/yolo_console_dll.cpp) target_compile_definitions(uselib_track PRIVATE TRACK_OPTFLOW=1) set_target_properties(uselib_track PROPERTIES LINKER_LANGUAGE CXX) @@ -250,8 +255,8 @@ if(OpenCV_FOUND) endif() if(OPENMP_FOUND) - target_link_libraries(darknet OpenMP::OpenMP_C) - target_link_libraries(darklib OpenMP::OpenMP_C) + target_link_libraries(darknet OpenMP::OpenMP_CXX) + target_link_libraries(darklib OpenMP::OpenMP_CXX) endif() if(CMAKE_COMPILER_IS_GNUCC) @@ -275,7 +280,7 @@ if(ENABLE_CUDA) endif() target_link_libraries(uselib darklib) -if(OpenCV_VERSION_MAJOR GREATER_EQUAL 3) +if(OpenCV_VERSION VERSION_GREATER "3.0" AND NOT SKIP_USELIB_TRACK) target_link_libraries(uselib_track darklib) install(TARGETS uselib_track DESTINATION ${CMAKE_SOURCE_DIR}/) endif() diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 00000000..2012a310 --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,67 @@ +image: Visual Studio 2017 +clone_folder: c:\projects\darknet + +environment: + WORKSPACE: C:\projects + matrix: + - platform: Cygwin64 + COMPILER: cygwin + CYGWIN_NOWINPATH: yes + CYGSH: C:\cygwin64\bin\bash -c + - platform: Win64 + COMPILER: vs + VCPKG_ROOT: C:\projects\vcpkg + VCPKG_DEFAULT_TRIPLET: x64-windows + USE_CUDA: yes + CUDACXX: C:\CUDA\bin\nvcc.exe + CUDA_PATH: C:\CUDA\ + CUDA_PATH_V10_0: C:\CUDA\ + - platform: Win64 + COMPILER: vs + VCPKG_ROOT: C:\projects\vcpkg + VCPKG_DEFAULT_TRIPLET: x64-windows + USE_CUDA: no + - platform: Win64 + COMPILER: vs + USE_INTEGRATED_LIBS: yes + +install: + - if [%COMPILER%]==[vs] cinst cmake ninja + - if [%COMPILER%]==[vs] SET "PATH=C:\Program Files\CMake\bin;%PATH%" + - if [%COMPILER%]==[vs] call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 + - if [%COMPILER%]==[cygwin] SET "PATH=C:\cygwin64\bin;C:\cygwin64\usr\bin;%PATH%" + - if [%COMPILER%]==[cygwin] SET PATH=%PATH:C:\Program Files\Git\usr\bin;=% + - git submodule -q update --init --recursive + - cd %WORKSPACE%\ + - if [%USE_CUDA%]==[yes] curl -L https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda_10.0.130_411.31_windows -o cuda_10.0.130_411.31_windows.exe + - if [%USE_CUDA%]==[yes] mkdir C:\CUDATEMP + - if [%USE_CUDA%]==[yes] mkdir C:\CUDA + - if [%USE_CUDA%]==[yes] 7z x cuda_10.0.130_411.31_windows.exe -oC:\CUDATEMP + - if [%USE_CUDA%]==[yes] cd C:\CUDATEMP + - if [%USE_CUDA%]==[yes] FOR /D %%G in ("*") DO xcopy C:\CUDATEMP\%%G\* C:\CUDA\ /s /y + - cd %WORKSPACE%\ + - mkdir cygwin-downloads + - ps: if($env:COMPILER -eq "cygwin") { Invoke-WebRequest https://cygwin.com/setup-x86_64.exe -OutFile $env:WORKSPACE\cygwin-setup.exe } + - if [%COMPILER%]==[cygwin] %WORKSPACE%\cygwin-setup.exe --quiet-mode --no-shortcuts --no-startmenu --no-desktop --upgrade-also --root C:\cygwin64 --local-package-dir %WORKSPACE%\cygwin-downloads --packages gcc-g++,cmake,libopencv-devel + - if [%COMPILER%]==[vs] if NOT [%USE_INTEGRATED_LIBS%]==[yes] git clone https://github.com/Microsoft/vcpkg + - if [%COMPILER%]==[vs] if NOT [%USE_INTEGRATED_LIBS%]==[yes] cd %VCPKG_ROOT% + - if [%COMPILER%]==[vs] if NOT [%USE_INTEGRATED_LIBS%]==[yes] bootstrap-vcpkg.bat + - if [%COMPILER%]==[vs] if NOT [%USE_INTEGRATED_LIBS%]==[yes] vcpkg integrate install + - if [%COMPILER%]==[vs] if NOT [%USE_INTEGRATED_LIBS%]==[yes] if [%USE_CUDA%]==[yes] vcpkg install cuda + - if [%COMPILER%]==[vs] if NOT [%USE_INTEGRATED_LIBS%]==[yes] vcpkg install opencv pthreads ## opencv[cuda] is too big to build, timing out (>1h). We use plain openCV also for CUDA builds (toolchain can manage this strange situation anyway) + - cd %WORKSPACE%\darknet\ + - mkdir build_debug && cd build_debug + - if [%COMPILER%]==[cygwin] %CYGSH% 'cmake .. -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="Debug"' + - if [%COMPILER%]==[vs] if NOT [%USE_INTEGRATED_LIBS%]==[yes] cmake -G "Visual Studio 15 2017" -T "host=x64" -A "x64" "-DCMAKE_TOOLCHAIN_FILE=%VCPKG_ROOT%\scripts\buildsystems\vcpkg.cmake" "-DVCPKG_TARGET_TRIPLET=%VCPKG_DEFAULT_TRIPLET%" -DCMAKE_BUILD_TYPE="Debug" .. + - cd .. + - mkdir build_release && cd build_release + - if [%COMPILER%]==[cygwin] %CYGSH% 'cmake .. -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="Release"' + - if [%COMPILER%]==[vs] if NOT [%USE_INTEGRATED_LIBS%]==[yes] cmake -G "Visual Studio 15 2017" -T "host=x64" -A "x64" "-DCMAKE_TOOLCHAIN_FILE=%VCPKG_ROOT%\scripts\buildsystems\vcpkg.cmake" "-DVCPKG_TARGET_TRIPLET=%VCPKG_DEFAULT_TRIPLET%" -DCMAKE_BUILD_TYPE="Release" .. + - if [%COMPILER%]==[vs] if [%USE_INTEGRATED_LIBS%]==[yes] cmake -G "Visual Studio 15 2017" -T "host=x64" -A "x64" -DCMAKE_BUILD_TYPE="Release" .. + - cd .. + +build_script: + - if [%COMPILER%]==[cygwin] cd build_debug && %CYGSH% 'cmake --build .' && cd .. + - if [%COMPILER%]==[cygwin] cd build_release && %CYGSH% 'cmake --build .' && cd .. + - if [%COMPILER%]==[vs] if NOT [%USE_INTEGRATED_LIBS%]==[yes] cd build_debug && cmake --build . --config Debug && cd .. + - if [%COMPILER%]==[vs] cd build_release && cmake --build . --config Release && cd .. diff --git a/src/im2col.h b/src/im2col.h index f510d61e..35f0039a 100644 --- a/src/im2col.h +++ b/src/im2col.h @@ -63,10 +63,9 @@ void convolve_gpu(float *input, float *weights, float *output, int in_w, int in_ void convolve_bin_gpu(float *input, float *weights, float *output, int in_w, int in_h, int in_c, int n, int size, int pad, int new_lda, float *mean_arr_gpu); -void convolve_bin_cpu(float *input, float *weights, float *output, int in_w, int in_h, int in_c, int n, - int size, int pad, int new_lda, float *mean_arr_gpu); +//void convolve_bin_cpu(float *input, float *weights, float *output, int in_w, int in_h, int in_c, int n, int size, int pad, int new_lda, float *mean_arr_gpu); -void convolve_cpu(float *input, float *weights, float *output, int in_w, int in_h, int in_c, int n, int size, int pad); +//void convolve_cpu(float *input, float *weights, float *output, int in_w, int in_h, int in_c, int n, int size, int pad); #endif #ifdef __cplusplus diff --git a/src/im2col_kernels.cu b/src/im2col_kernels.cu index 90af12b6..da952df5 100644 --- a/src/im2col_kernels.cu +++ b/src/im2col_kernels.cu @@ -1818,7 +1818,7 @@ void gemm_nn_custom_bin_mean_transposed_gpu(int M, int N, int K, } // -------------------------------- - +/* void convolve_cpu(float *input, float *weights, float *output, int in_w, int in_h, int in_c, int n, int size, int pad) { int fil; @@ -1929,6 +1929,7 @@ void convolve_bin_cpu(float *input, float *weights, float *output, int in_w, int } } } +*/ // -------------------------------- __global__ void convolve_gpu_kernel(float *input, float *weights, float *output, int in_w, int in_h, int in_c, int n, int size, int pad) diff --git a/src/yolo_console_dll.cpp b/src/yolo_console_dll.cpp index c4554fba..be84f4d5 100644 --- a/src/yolo_console_dll.cpp +++ b/src/yolo_console_dll.cpp @@ -36,7 +36,7 @@ #endif // TRACK_OPTFLOW #endif // USE_CMAKE_LIBS #else -#define OPENCV_VERSION CVAUX_STR(CV_VERSION_EPOCH)""CVAUX_STR(CV_VERSION_MAJOR)""CVAUX_STR(CV_VERSION_MINOR) +#define OPENCV_VERSION CVAUX_STR(CV_VERSION_EPOCH)"" CVAUX_STR(CV_VERSION_MAJOR)"" CVAUX_STR(CV_VERSION_MINOR) #ifndef USE_CMAKE_LIBS #pragma comment(lib, "opencv_core" OPENCV_VERSION ".lib") #pragma comment(lib, "opencv_imgproc" OPENCV_VERSION ".lib")