| 1 | This patch allows us to use our copy of the dependencies instead
|
| 2 | of downloading them and rebuilding them. It also builds a shared
|
| 3 | library.
|
| 4 |
|
| 5 | diff --git a/CMakeLists.txt b/CMakeLists.txt
|
| 6 | index 5ecd2df..aaa67d1 100644
|
| 7 | |
| 8 | |
| 9 | @@ -12,7 +12,7 @@ SET_PROPERTY(CACHE NNPACK_BACKEND PROPERTY STRINGS auto psimd scalar)
|
| 10 | OPTION(NNPACK_CONVOLUTION_ONLY "Build only NNPACK functions for convolutional layer" OFF)
|
| 11 | OPTION(NNPACK_INFERENCE_ONLY "Build only NNPACK functions for inference" OFF)
|
| 12 | OPTION(NNPACK_CUSTOM_THREADPOOL "Build NNPACK for custom thread pool" OFF)
|
| 13 | -SET(NNPACK_LIBRARY_TYPE "default" CACHE STRING "Type of library (shared, static, or default) to build")
|
| 14 | +SET(NNPACK_LIBRARY_TYPE "shared" CACHE STRING "Type of library (shared, static, or default) to build")
|
| 15 | SET_PROPERTY(CACHE NNPACK_LIBRARY_TYPE PROPERTY STRINGS default static shared)
|
| 16 | OPTION(NNPACK_BUILD_TESTS "Build NNPACK unit tests" ON)
|
| 17 |
|
| 18 | @@ -123,7 +123,7 @@ SET(CONFU_DEPENDENCIES_BINARY_DIR ${CMAKE_BINARY_DIR}/deps
|
| 19 | CACHE PATH "Confu-style dependencies binary directory")
|
| 20 |
|
| 21 | IF(NNPACK_BACKEND STREQUAL "x86-64")
|
| 22 | - IF(NOT DEFINED PYTHON_SIX_SOURCE_DIR)
|
| 23 | + IF(FALSE)
|
| 24 | MESSAGE(STATUS "Downloading six (Python package) to ${CONFU_DEPENDENCIES_SOURCE_DIR}/six (define PYTHON_SIX_SOURCE_DIR to avoid it)")
|
| 25 | CONFIGURE_FILE(cmake/DownloadSix.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/six-download/CMakeLists.txt")
|
| 26 | EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
|
| 27 | @@ -133,7 +133,7 @@ IF(NNPACK_BACKEND STREQUAL "x86-64")
|
| 28 | SET(PYTHON_SIX_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/six" CACHE STRING "six (Python package) source directory")
|
| 29 | ENDIF()
|
| 30 |
|
| 31 | - IF(NOT DEFINED PYTHON_ENUM_SOURCE_DIR)
|
| 32 | + IF(FALSE)
|
| 33 | IF(${PYTHON_VERSION_STRING} VERSION_LESS 3.4)
|
| 34 | # ---[ Python < 3.4 does not natively support enums, and needs a polyfill
|
| 35 | MESSAGE(STATUS "Downloading enum (Python package) to ${CONFU_DEPENDENCIES_SOURCE_DIR}/enum (define PYTHON_ENUM_SOURCE_DIR to avoid it)")
|
| 36 | @@ -148,7 +148,7 @@ IF(NNPACK_BACKEND STREQUAL "x86-64")
|
| 37 | ENDIF()
|
| 38 | ENDIF()
|
| 39 |
|
| 40 | - IF(NOT DEFINED PYTHON_PEACHPY_SOURCE_DIR)
|
| 41 | + IF(FALSE)
|
| 42 | # ---[ PeachPy requires Opcodes for installation
|
| 43 | IF(NOT DEFINED PYTHON_OPCODES_SOURCE_DIR)
|
| 44 | MESSAGE(STATUS "Downloading opcodes (Python package) to ${CONFU_DEPENDENCIES_SOURCE_DIR}/opcodes (define PYTHON_OPCODES_SOURCE_DIR to avoid it)")
|
| 45 | @@ -169,15 +169,9 @@ IF(NNPACK_BACKEND STREQUAL "x86-64")
|
| 46 | SET(PYTHON_PEACHPY_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/peachpy" CACHE STRING "PeachPy (Python package) source directory")
|
| 47 | ENDIF()
|
| 48 |
|
| 49 | - IF(${PYTHON_VERSION_STRING} VERSION_LESS 3.4)
|
| 50 | - # ---[ Python < 3.4 does not natively support enums, and needs a polyfill
|
| 51 | - SET(PEACHPY_PYTHONPATH "${PYTHON_SIX_SOURCE_DIR}:${PYTHON_ENUM_SOURCE_DIR}:${PYTHON_PEACHPY_SOURCE_DIR}")
|
| 52 | - ELSE()
|
| 53 | - SET(PEACHPY_PYTHONPATH "${PYTHON_SIX_SOURCE_DIR}:${PYTHON_PEACHPY_SOURCE_DIR}")
|
| 54 | - ENDIF()
|
| 55 | ENDIF()
|
| 56 |
|
| 57 | -IF(NOT DEFINED CPUINFO_SOURCE_DIR)
|
| 58 | +IF(FALSE)
|
| 59 | MESSAGE(STATUS "Downloading cpuinfo to ${CONFU_DEPENDENCIES_SOURCE_DIR}/cpuinfo (define CPUINFO_SOURCE_DIR to avoid it)")
|
| 60 | CONFIGURE_FILE(cmake/DownloadCpuinfo.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/cpuinfo-download/CMakeLists.txt")
|
| 61 | EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
|
| 62 | @@ -187,7 +181,7 @@ IF(NOT DEFINED CPUINFO_SOURCE_DIR)
|
| 63 | SET(CPUINFO_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/cpuinfo" CACHE STRING "cpuinfo source directory")
|
| 64 | ENDIF()
|
| 65 |
|
| 66 | -IF(NOT DEFINED FP16_SOURCE_DIR)
|
| 67 | +IF(FALSE)
|
| 68 | MESSAGE(STATUS "Downloading FP16 to ${CONFU_DEPENDENCIES_SOURCE_DIR}/fp16 (define FP16_SOURCE_DIR to avoid it)")
|
| 69 | CONFIGURE_FILE(cmake/DownloadFP16.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/fp16-download/CMakeLists.txt")
|
| 70 | EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
|
| 71 | @@ -197,7 +191,7 @@ IF(NOT DEFINED FP16_SOURCE_DIR)
|
| 72 | SET(FP16_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/fp16" CACHE STRING "FP16 source directory")
|
| 73 | ENDIF()
|
| 74 |
|
| 75 | -IF(NOT DEFINED FXDIV_SOURCE_DIR)
|
| 76 | +IF(FALSE)
|
| 77 | MESSAGE(STATUS "Downloading FXdiv to ${CONFU_DEPENDENCIES_SOURCE_DIR}/fxdiv (define FXDIV_SOURCE_DIR to avoid it)")
|
| 78 | CONFIGURE_FILE(cmake/DownloadFXdiv.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/fxdiv-download/CMakeLists.txt")
|
| 79 | EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
|
| 80 | @@ -207,7 +201,7 @@ IF(NOT DEFINED FXDIV_SOURCE_DIR)
|
| 81 | SET(FXDIV_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/fxdiv" CACHE STRING "FXdiv source directory")
|
| 82 | ENDIF()
|
| 83 |
|
| 84 | -IF(NOT DEFINED PSIMD_SOURCE_DIR)
|
| 85 | +IF(FALSE)
|
| 86 | MESSAGE(STATUS "Downloading PSimd to ${CONFU_DEPENDENCIES_SOURCE_DIR}/psimd (define PSIMD_SOURCE_DIR to avoid it)")
|
| 87 | CONFIGURE_FILE(cmake/DownloadPSimd.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/psimd-download/CMakeLists.txt")
|
| 88 | EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
|
| 89 | @@ -217,7 +211,7 @@ IF(NOT DEFINED PSIMD_SOURCE_DIR)
|
| 90 | SET(PSIMD_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/psimd" CACHE STRING "PSimd source directory")
|
| 91 | ENDIF()
|
| 92 |
|
| 93 | -IF(NOT DEFINED PTHREADPOOL_SOURCE_DIR)
|
| 94 | +IF(FALSE)
|
| 95 | MESSAGE(STATUS "Downloading pthreadpool to ${CONFU_DEPENDENCIES_SOURCE_DIR}/pthreadpool (define PTHREADPOOL_SOURCE_DIR to avoid it)")
|
| 96 | CONFIGURE_FILE(cmake/DownloadPThreadPool.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/pthreadpool-download/CMakeLists.txt")
|
| 97 | EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
|
| 98 | @@ -227,7 +221,7 @@ IF(NOT DEFINED PTHREADPOOL_SOURCE_DIR)
|
| 99 | SET(PTHREADPOOL_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/pthreadpool" CACHE STRING "pthreadpool source directory")
|
| 100 | ENDIF()
|
| 101 |
|
| 102 | -IF(NNPACK_BUILD_TESTS AND NOT DEFINED GOOGLETEST_SOURCE_DIR)
|
| 103 | +IF(FALSE)
|
| 104 | MESSAGE(STATUS "Downloading Google Test to ${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest (define GOOGLETEST_SOURCE_DIR to avoid it)")
|
| 105 | CONFIGURE_FILE(cmake/DownloadGoogleTest.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download/CMakeLists.txt")
|
| 106 | EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
|
| 107 | @@ -237,6 +231,7 @@ IF(NNPACK_BUILD_TESTS AND NOT DEFINED GOOGLETEST_SOURCE_DIR)
|
| 108 | SET(GOOGLETEST_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest" CACHE STRING "Google Test source directory")
|
| 109 | ENDIF()
|
| 110 |
|
| 111 | +
|
| 112 | # ---[ NNPACK library
|
| 113 | SET(NNPACK_INIT_SRCS src/init.c)
|
| 114 | SET(NNPACK_LAYER_SRCS src/convolution-inference.c)
|
| 115 | @@ -427,8 +422,7 @@ IF(NNPACK_BACKEND STREQUAL "x86-64")
|
| 116 | FILE(MAKE_DIRECTORY ${obj_dir})
|
| 117 | ADD_CUSTOM_COMMAND(
|
| 118 | OUTPUT ${obj}
|
| 119 | - COMMAND "PYTHONPATH=${PEACHPY_PYTHONPATH}"
|
| 120 | - ${PYTHON_EXECUTABLE} -m peachpy.x86_64
|
| 121 | + COMMAND ${PYTHON_EXECUTABLE} -m peachpy.x86_64
|
| 122 | -mabi=sysv -g4 -mimage-format=${PEACHPY_IMAGE_FORMAT}
|
| 123 | "-I${PROJECT_SOURCE_DIR}/src" "-I${PROJECT_SOURCE_DIR}/src/x86_64-fma" "-I${FP16_SOURCE_DIR}/include"
|
| 124 | -o ${obj} "${PROJECT_SOURCE_DIR}/${src}"
|
| 125 | @@ -495,63 +489,10 @@ ADD_LIBRARY(nnpack_reference_layers STATIC ${NNPACK_REFERENCE_LAYERS_SRCS})
|
| 126 | NNPACK_TARGET_ENABLE_C99(nnpack_reference_layers)
|
| 127 | TARGET_INCLUDE_DIRECTORIES(nnpack_reference_layers PUBLIC include)
|
| 128 |
|
| 129 | -# ---[ Configure cpuinfo
|
| 130 | -IF(NOT TARGET cpuinfo)
|
| 131 | - SET(CPUINFO_BUILD_TOOLS OFF CACHE BOOL "")
|
| 132 | - SET(CPUINFO_BUILD_UNIT_TESTS OFF CACHE BOOL "")
|
| 133 | - SET(CPUINFO_BUILD_MOCK_TESTS OFF CACHE BOOL "")
|
| 134 | - SET(CPUINFO_BUILD_BENCHMARKS OFF CACHE BOOL "")
|
| 135 | - ADD_SUBDIRECTORY(
|
| 136 | - "${CPUINFO_SOURCE_DIR}"
|
| 137 | - "${CONFU_DEPENDENCIES_BINARY_DIR}/cpuinfo")
|
| 138 | -ENDIF()
|
| 139 | -TARGET_LINK_LIBRARIES(nnpack PRIVATE cpuinfo)
|
| 140 | -
|
| 141 | -# ---[ Configure pthreadpool
|
| 142 | -IF(NOT TARGET pthreadpool)
|
| 143 | - SET(PTHREADPOOL_BUILD_TESTS OFF CACHE BOOL "")
|
| 144 | - SET(PTHREADPOOL_BUILD_BENCHMARKS OFF CACHE BOOL "")
|
| 145 | - ADD_SUBDIRECTORY(
|
| 146 | - "${PTHREADPOOL_SOURCE_DIR}"
|
| 147 | - "${CONFU_DEPENDENCIES_BINARY_DIR}/pthreadpool")
|
| 148 | -ENDIF()
|
| 149 | -IF(NNPACK_CUSTOM_THREADPOOL)
|
| 150 | - # Depend on pthreadpool interface, but not on implementation.
|
| 151 | - # This is used when NNPACK user (e.g. Caffe2) provides its own threadpool implementation.
|
| 152 | - TARGET_LINK_LIBRARIES(nnpack PUBLIC pthreadpool_interface)
|
| 153 | -ELSE()
|
| 154 | - TARGET_LINK_LIBRARIES(nnpack PUBLIC pthreadpool)
|
| 155 | -ENDIF()
|
| 156 | -TARGET_LINK_LIBRARIES(nnpack_reference_layers PUBLIC pthreadpool)
|
| 157 | +TARGET_LINK_LIBRARIES(nnpack PUBLIC cpuinfo)
|
| 158 |
|
| 159 | -# ---[ Configure FXdiv
|
| 160 | -IF(NOT TARGET fxdiv)
|
| 161 | - SET(FXDIV_BUILD_TESTS OFF CACHE BOOL "")
|
| 162 | - SET(FXDIV_BUILD_BENCHMARKS OFF CACHE BOOL "")
|
| 163 | - ADD_SUBDIRECTORY(
|
| 164 | - "${FXDIV_SOURCE_DIR}"
|
| 165 | - "${CONFU_DEPENDENCIES_BINARY_DIR}/fxdiv")
|
| 166 | -ENDIF()
|
| 167 | -TARGET_LINK_LIBRARIES(nnpack PRIVATE fxdiv)
|
| 168 | -
|
| 169 | -# ---[ Configure psimd
|
| 170 | -IF(NOT TARGET psimd)
|
| 171 | - ADD_SUBDIRECTORY(
|
| 172 | - "${PSIMD_SOURCE_DIR}"
|
| 173 | - "${CONFU_DEPENDENCIES_BINARY_DIR}/psimd")
|
| 174 | -ENDIF()
|
| 175 | -TARGET_LINK_LIBRARIES(nnpack PRIVATE psimd)
|
| 176 | -
|
| 177 | -# ---[ Configure FP16
|
| 178 | -IF(NOT TARGET fp16)
|
| 179 | - SET(FP16_BUILD_TESTS OFF CACHE BOOL "")
|
| 180 | - SET(FP16_BUILD_BENCHMARKS OFF CACHE BOOL "")
|
| 181 | - ADD_SUBDIRECTORY(
|
| 182 | - "${FP16_SOURCE_DIR}"
|
| 183 | - "${CONFU_DEPENDENCIES_BINARY_DIR}/fp16")
|
| 184 | -ENDIF()
|
| 185 | -TARGET_LINK_LIBRARIES(nnpack PRIVATE fp16)
|
| 186 | -TARGET_LINK_LIBRARIES(nnpack_reference_layers PUBLIC fp16)
|
| 187 | +TARGET_LINK_LIBRARIES(nnpack PUBLIC pthreadpool)
|
| 188 | +TARGET_LINK_LIBRARIES(nnpack_reference_layers PUBLIC pthreadpool)
|
| 189 |
|
| 190 | INSTALL(TARGETS nnpack
|
| 191 | LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
| 192 | @@ -560,13 +501,6 @@ INSTALL(TARGETS nnpack
|
| 193 |
|
| 194 | IF(NNPACK_BUILD_TESTS)
|
| 195 | # ---[ Build google test
|
| 196 | - IF(NOT TARGET gtest)
|
| 197 | - SET(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
|
| 198 | - ADD_SUBDIRECTORY(
|
| 199 | - "${GOOGLETEST_SOURCE_DIR}"
|
| 200 | - "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest")
|
| 201 | - ENDIF()
|
| 202 | -
|
| 203 | ADD_EXECUTABLE(convolution-inference-smoketest test/convolution-inference/smoke.cc)
|
| 204 | NNPACK_TARGET_ENABLE_CXX11(convolution-inference-smoketest)
|
| 205 | TARGET_INCLUDE_DIRECTORIES(convolution-inference-smoketest PRIVATE test)
|