From 56a6e0cdba4bf0b1a607c44a666ceab65dc44c50 Mon Sep 17 00:00:00 2001 From: Stefano Sinigardi Date: Mon, 25 Feb 2019 09:38:25 +0100 Subject: [PATCH 01/12] [travis/appveyor] add CI, remove broken empty include path from CMakeLists.txt --- .travis.yml | 233 +++++++++++++++++++++++++++++++++++++++ CMakeLists.txt | 24 ++-- appveyor.yml | 48 ++++++++ src/yolo_console_dll.cpp | 2 +- 4 files changed, 295 insertions(+), 12 deletions(-) create mode 100644 .travis.yml create mode 100644 appveyor.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..abe2c7db --- /dev/null +++ b/.travis.yml @@ -0,0 +1,233 @@ +language: cpp + +matrix: + include: + + - os: osx + compiler: gcc + name: macOS - gcc@5 - opencv@2 + env: + - MATRIX_EVAL="brew update && brew install gcc@5 gcc 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 update && brew install gcc@5 gcc 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 update && 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 update && 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 update && 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 update && brew install opencv@3 && OpenCV_DIR=/usr/local/opt/opencv@3" + + - os: linux + compiler: clang + name: ubuntu - native clang + addons: + apt: + update: true + packages: + - libopencv-dev + env: + - MATRIX_EVAL="" + + - os: linux + compiler: clang + name: ubuntu - 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 - 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 - 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 - 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 - 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 - 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 - native gcc + addons: + apt: + update: true + packages: + - libopencv-dev + - gfortran + env: + - MATRIX_EVAL="" + + - os: linux + compiler: gcc + name: ubuntu - 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 - 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 - 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 - 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 - 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" + +before_install: + - eval "${MATRIX_EVAL}" + +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..932a166e 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) @@ -21,12 +21,17 @@ enable_language(CXX) set(ENABLE_CUDA "TRUE" CACHE BOOL "Enable CUDA build") -include(CheckLanguage) -check_language(CUDA) -if(CMAKE_CUDA_COMPILER) - enable_language(CUDA) +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() - set(ENABLE_CUDA "FALSE" 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" FORCE) + endif() endif() set(CMAKE_CXX_STANDARD 11) @@ -112,9 +117,6 @@ endif() if(ENABLE_CUDA) add_definitions(-DGPU) - if(NOT WIN32) - include_directories("${CMAKE_CUDA_TOOLKIT_INCLUDE_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") set(CUDA_COMPUTE_MODEL ${CUDA_COMPUTE_MODEL_70}) @@ -226,7 +228,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") 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) @@ -275,7 +277,7 @@ if(ENABLE_CUDA) endif() target_link_libraries(uselib darklib) -if(OpenCV_VERSION_MAJOR GREATER_EQUAL 3) +if(OpenCV_VERSION VERSION_GREATER "3.0") 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..9f6d32ce --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,48 @@ +image: Visual Studio 2017 +clone_folder: c:\projects\darknet +configuration: Release + +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 + + +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%\ + - 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] git clone https://github.com/Microsoft/vcpkg + - if [%COMPILER%]==[vs] cd %VCPKG_ROOT% + - if [%COMPILER%]==[vs] bootstrap-vcpkg.bat + - if [%COMPILER%]==[vs] vcpkg integrate install + - if [%COMPILER%]==[vs] vcpkg install opencv pthreads + - cd %WORKSPACE%\darknet\ + - mkdir build_debug && cd build_debug + - if [%COMPILER%]==[cygwin] %CYGSH% 'cmake .. -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="Debug"' + - if [%COMPILER%]==[vs] 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] 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" .. + - 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] cd build_debug && cmake --build . --config Debug && cd .. + - if [%COMPILER%]==[vs] cd build_release && cmake --build . --config Release && cd .. 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") From ef88900eb0d943a8f91c28339f6b795103bd46a2 Mon Sep 17 00:00:00 2001 From: Stefano Sinigardi Date: Mon, 25 Feb 2019 23:58:57 +0100 Subject: [PATCH 02/12] [CMakeLists.txt] remove references to C since CXX is the only way to build the project --- CMakeLists.txt | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 932a166e..21e1fe0b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -76,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) @@ -86,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() @@ -168,10 +160,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 @@ -252,8 +247,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) From 2a874b49a0cbb33ff9f9ab2a4e68583637f45bb8 Mon Sep 17 00:00:00 2001 From: Stefano Sinigardi Date: Tue, 26 Feb 2019 07:30:40 +0100 Subject: [PATCH 03/12] [CI] trying to improve resiliency --- .travis.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index abe2c7db..cd381d77 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,37 +7,37 @@ matrix: compiler: gcc name: macOS - gcc@5 - opencv@2 env: - - MATRIX_EVAL="brew update && brew install gcc@5 gcc opencv@2 && CC=gcc-5 && CXX=g++-5 && OpenCV_DIR=/usr/local/opt/opencv@2" + - 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 update && brew install gcc@5 gcc opencv@3 && CC=gcc-5 && CXX=g++-5 && OpenCV_DIR=/usr/local/opt/opencv@3" + - 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 update && brew install opencv@2 && OpenCV_DIR=/usr/local/opt/opencv@2" + - 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 update && brew install opencv@3 && OpenCV_DIR=/usr/local/opt/opencv@3" + - 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 update && brew install opencv@2 && OpenCV_DIR=/usr/local/opt/opencv@2" + - 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 update && brew install opencv@3 && OpenCV_DIR=/usr/local/opt/opencv@3" + - MATRIX_EVAL="brew install opencv@3 && OpenCV_DIR=/usr/local/opt/opencv@3" - os: linux compiler: clang @@ -216,7 +216,7 @@ matrix: - MATRIX_EVAL="CC=gcc-8 && CXX=g++-8" before_install: - - eval "${MATRIX_EVAL}" + - travis_retry eval "${MATRIX_EVAL}" before_script: - mkdir build_debug From caeb0aee05f989d4714148a65055b1051bbda99b Mon Sep 17 00:00:00 2001 From: Stefano Sinigardi Date: Tue, 26 Feb 2019 21:21:34 +0100 Subject: [PATCH 04/12] [CI] add CUDA build tests in matrix --- .travis.yml | 225 +++++++++++++++++++++++++++++++++++++++++++++---- CMakeLists.txt | 3 + 2 files changed, 212 insertions(+), 16 deletions(-) diff --git a/.travis.yml b/.travis.yml index cd381d77..82afaed9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -41,7 +41,7 @@ matrix: - os: linux compiler: clang - name: ubuntu - native clang + name: ubuntu 14.04 - native clang addons: apt: update: true @@ -52,7 +52,7 @@ matrix: - os: linux compiler: clang - name: ubuntu - clang@3.6 + name: ubuntu 14.04 - clang@3.6 addons: apt: update: true @@ -64,7 +64,7 @@ matrix: - os: linux compiler: clang - name: ubuntu - clang@3.8 + name: ubuntu 14.04 - clang@3.8 addons: apt: update: true @@ -78,7 +78,7 @@ matrix: - os: linux compiler: clang - name: ubuntu - clang@3.9 + name: ubuntu 14.04 - clang@3.9 addons: apt: update: true @@ -92,7 +92,7 @@ matrix: - os: linux compiler: clang - name: ubuntu - clang@4.0 + name: ubuntu 14.04 - clang@4.0 addons: apt: update: true @@ -106,7 +106,7 @@ matrix: - os: linux compiler: clang - name: ubuntu - clang@5.0 + name: ubuntu 14.04 - clang@5.0 addons: apt: update: true @@ -120,7 +120,7 @@ matrix: - os: linux compiler: clang - name: ubuntu - clang@6.0 + name: ubuntu 14.04 - clang@6.0 addons: apt: update: true @@ -135,19 +135,18 @@ matrix: - os: linux compiler: gcc - name: ubuntu - native gcc + name: ubuntu 14.04 - native gcc addons: apt: update: true packages: - libopencv-dev - - gfortran env: - MATRIX_EVAL="" - os: linux compiler: gcc - name: ubuntu - gcc@4.9 + name: ubuntu 14.04 - gcc@4.9 addons: apt: update: true @@ -157,11 +156,11 @@ matrix: - libopencv-dev - g++-4.9 env: - - MATRIX_EVAL="CC=gcc-4.9 && CXX=g++-4.9" + - MATRIX_EVAL="CC=gcc-4.9 && CXX=g++-4.9" - os: linux compiler: gcc - name: ubuntu - gcc@5.0 + name: ubuntu 14.04 - gcc@5.0 addons: apt: update: true @@ -171,11 +170,11 @@ matrix: - libopencv-dev - g++-5 env: - - MATRIX_EVAL="CC=gcc-5 && CXX=g++-5" + - MATRIX_EVAL="CC=gcc-5 && CXX=g++-5" - os: linux compiler: gcc - name: ubuntu - gcc@6.0 + name: ubuntu 14.04 - gcc@6.0 addons: apt: update: true @@ -189,7 +188,7 @@ matrix: - os: linux compiler: gcc - name: ubuntu - gcc@7.0 + name: ubuntu 14.04 - gcc@7.0 addons: apt: update: true @@ -203,7 +202,7 @@ matrix: - os: linux compiler: gcc - name: ubuntu - gcc@8.0 + name: ubuntu 14.04 - gcc@8.0 addons: apt: update: true @@ -215,9 +214,203 @@ matrix: 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 diff --git a/CMakeLists.txt b/CMakeLists.txt index 21e1fe0b..de6d95a5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -109,6 +109,9 @@ endif() if(ENABLE_CUDA) add_definitions(-DGPU) + if(NOT WIN32) + include_directories("${CMAKE_CUDA_TOOLKIT_INCLUDE_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") set(CUDA_COMPUTE_MODEL ${CUDA_COMPUTE_MODEL_70}) From 3b43d32dfff70f4c3ef310322279560f92d00f41 Mon Sep 17 00:00:00 2001 From: Stefano Sinigardi Date: Thu, 28 Feb 2019 00:55:44 +0100 Subject: [PATCH 05/12] [ci] add tests for included libs, add link path for linux --- CMakeLists.txt | 1 + appveyor.yml | 28 +++++++++++++++------------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index de6d95a5..5afc9fd7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -111,6 +111,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") diff --git a/appveyor.yml b/appveyor.yml index 9f6d32ce..bc452e12 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,6 +1,5 @@ image: Visual Studio 2017 clone_folder: c:\projects\darknet -configuration: Release environment: WORKSPACE: C:\projects @@ -13,7 +12,9 @@ environment: COMPILER: vs VCPKG_ROOT: C:\projects\vcpkg VCPKG_DEFAULT_TRIPLET: x64-windows - + - platform: Win64 + COMPILER: vs + USE_INTEGRATED_LIBS: yes install: - if [%COMPILER%]==[vs] cinst cmake ninja @@ -26,23 +27,24 @@ install: - 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] git clone https://github.com/Microsoft/vcpkg - - if [%COMPILER%]==[vs] cd %VCPKG_ROOT% - - if [%COMPILER%]==[vs] bootstrap-vcpkg.bat - - if [%COMPILER%]==[vs] vcpkg integrate install - - if [%COMPILER%]==[vs] vcpkg install opencv pthreads + - 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] vcpkg install opencv pthreads - cd %WORKSPACE%\darknet\ - mkdir build_debug && cd build_debug - if [%COMPILER%]==[cygwin] %CYGSH% 'cmake .. -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="Debug"' - - if [%COMPILER%]==[vs] 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" .. + - 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] 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 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] cd build_debug && cmake --build . --config Debug && cd .. - - if [%COMPILER%]==[vs] cd build_release && cmake --build . --config Release && cd .. + - 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 .. From 139ddab7fa000f31d292c608f9d21178288b78e9 Mon Sep 17 00:00:00 2001 From: Stefano Sinigardi Date: Thu, 28 Feb 2019 07:22:57 +0100 Subject: [PATCH 06/12] remove unused cpu function in .cu file --- src/im2col.h | 5 ++--- src/im2col_kernels.cu | 3 ++- 2 files changed, 4 insertions(+), 4 deletions(-) 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) From 2acbfe9592f46a5b59bbafab40393bcadbd4645f Mon Sep 17 00:00:00 2001 From: Stefano Sinigardi Date: Thu, 28 Feb 2019 15:57:03 +0100 Subject: [PATCH 07/12] [ci] try cuda builds on windows, skip building uselib_track if opencv does not have cuda support --- CMakeLists.txt | 20 ++++++++++++-------- appveyor.yml | 14 +++++++++++++- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5afc9fd7..4fce9c30 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,8 +19,13 @@ endif() enable_language(C) enable_language(CXX) -set(ENABLE_CUDA "TRUE" CACHE BOOL "Enable CUDA build") +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+") @@ -34,11 +39,6 @@ else() endif() 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(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 @@ -103,6 +103,10 @@ else() endif() if(OpenCV_FOUND) + if(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() @@ -227,7 +231,7 @@ endif() target_compile_definitions(darklib PRIVATE LIB_EXPORTS=1) set_target_properties(darklib PROPERTIES LINKER_LANGUAGE CXX) -if(OpenCV_VERSION VERSION_GREATER "3.0") +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) @@ -276,7 +280,7 @@ if(ENABLE_CUDA) endif() target_link_libraries(uselib darklib) -if(OpenCV_VERSION VERSION_GREATER "3.0") +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 index bc452e12..665fcfa0 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -12,6 +12,14 @@ environment: COMPILER: vs VCPKG_ROOT: C:\projects\vcpkg VCPKG_DEFAULT_TRIPLET: x64-windows + USE_CUDA: yes + CUDACXX: C:\CUDA\nvcc\bin\nvcc.exe + CUDA_PATH: C:\CUDA\nvcc + - 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 @@ -24,6 +32,9 @@ install: - 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] if NOT EXIST C:\CUDA mkdir C:\CUDA + - if [%USE_CUDA%]==[yes] 7z x cuda_10.0.130_411.31_windows.exe -oC:\CUDA nvcc/* nvrtc*/* - 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 @@ -31,7 +42,8 @@ install: - 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] vcpkg install opencv pthreads + - if [%COMPILER%]==[vs] if NOT [%USE_INTEGRATED_LIBS%]==[yes] if NOT [%USE_CUDA%]==[yes] vcpkg install opencv pthreads + - if [%COMPILER%]==[vs] if NOT [%USE_INTEGRATED_LIBS%]==[yes] if [%USE_CUDA%]==[yes] vcpkg install opencv[cuda] pthreads - cd %WORKSPACE%\darknet\ - mkdir build_debug && cd build_debug - if [%COMPILER%]==[cygwin] %CYGSH% 'cmake .. -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="Debug"' From 52312f5f8f56fba12736540c39c06b9bd5df77c1 Mon Sep 17 00:00:00 2001 From: Stefano Sinigardi Date: Thu, 28 Feb 2019 21:04:58 +0100 Subject: [PATCH 08/12] [appveyor/cuda] extract all files from CUDA archive --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 665fcfa0..af204a89 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -34,7 +34,7 @@ install: - 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] if NOT EXIST C:\CUDA mkdir C:\CUDA - - if [%USE_CUDA%]==[yes] 7z x cuda_10.0.130_411.31_windows.exe -oC:\CUDA nvcc/* nvrtc*/* + - if [%USE_CUDA%]==[yes] 7z x cuda_10.0.130_411.31_windows.exe -oC:\CUDA - 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 From 6dbfeee159bfd34a24a87aa9481dd4717c53a45f Mon Sep 17 00:00:00 2001 From: Stefano Sinigardi Date: Fri, 1 Mar 2019 09:15:34 +0100 Subject: [PATCH 09/12] [appveyor] fix CUDA paths again --- appveyor.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index af204a89..861934a0 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -13,8 +13,8 @@ environment: VCPKG_ROOT: C:\projects\vcpkg VCPKG_DEFAULT_TRIPLET: x64-windows USE_CUDA: yes - CUDACXX: C:\CUDA\nvcc\bin\nvcc.exe - CUDA_PATH: C:\CUDA\nvcc + CUDACXX: C:\CUDA\bin\nvcc.exe + CUDA_PATH: C:\CUDA\ - platform: Win64 COMPILER: vs VCPKG_ROOT: C:\projects\vcpkg @@ -33,8 +33,12 @@ install: - 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] if NOT EXIST C:\CUDA mkdir C:\CUDA - - if [%USE_CUDA%]==[yes] 7z x cuda_10.0.130_411.31_windows.exe -oC:\CUDA + - 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 From 278df5e89e639bbe16dc8f000a4832973046d3d0 Mon Sep 17 00:00:00 2001 From: Stefano Sinigardi Date: Fri, 1 Mar 2019 11:11:25 +0100 Subject: [PATCH 10/12] [appveyor] disable building opencv[cuda], it's too slow --- appveyor.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 861934a0..e0abb0b5 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -46,8 +46,7 @@ install: - 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 NOT [%USE_CUDA%]==[yes] vcpkg install opencv pthreads - - if [%COMPILER%]==[vs] if NOT [%USE_INTEGRATED_LIBS%]==[yes] if [%USE_CUDA%]==[yes] vcpkg install opencv[cuda] pthreads + - 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"' From 6c7540420b25faa547ab946f909baff68e1ff54d Mon Sep 17 00:00:00 2001 From: Stefano Sinigardi Date: Fri, 1 Mar 2019 11:23:31 +0100 Subject: [PATCH 11/12] [opencv-cuda] handle properly cuda enabled but opencv built without cuda support --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4fce9c30..9732035b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -103,7 +103,7 @@ else() endif() if(OpenCV_FOUND) - if(NOT OpenCV_CUDA_VERSION) + 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() From 2c0d857110c30c9fb24bea6d26448a6ef3c78ecd Mon Sep 17 00:00:00 2001 From: Stefano Sinigardi Date: Fri, 1 Mar 2019 12:03:41 +0100 Subject: [PATCH 12/12] [appveyor-cuda] add another env variable --- appveyor.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/appveyor.yml b/appveyor.yml index e0abb0b5..2012a310 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -15,6 +15,7 @@ environment: 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 @@ -46,6 +47,7 @@ install: - 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