Skip to content

Commit

Permalink
Add qnnpack
Browse files Browse the repository at this point in the history
  • Loading branch information
hmaarrfk committed May 29, 2022
1 parent 387eccd commit 9d17074
Show file tree
Hide file tree
Showing 3 changed files with 218 additions and 0 deletions.
10 changes: 10 additions & 0 deletions recipes/qnnpack/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
mkdir build
cd build
cmake ${CMAKE_ARGS} \
-DCMAKE_BUILD_TYPE=Release \
-DQNNPACK_BUILD_TESTS=OFF \
-DQNNPACK_BUILD_BENCHMARKS=OFF \
-DQNNPACK_LIBRARY_TYPE=shared \
..
make -j${CPU_COUNT}
make install
68 changes: 68 additions & 0 deletions recipes/qnnpack/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# To generate the version number
{%- if false %}
git clone git@github.com:pytorch/qnnpack.git
cd QNNPACK
git pull
echo 0.0.0.$(date +%Y%m%d -d "$(git show -s --format=%ci HEAD)").$(git rev-list HEAD --count).$(git rev-parse --short HEAD)
# Get the git sha
git rev-parse HEAD
wget --quiet https://github.com/pytorch/qnnpack/archive/$(git rev-parse HEAD).tar.gz
openssl sha256 $(git rev-parse HEAD).tar.gz
{%- endif %}

{% set gitrev = "7d2a4e9931a82adc3814275b6219a03e24e36b4c" %}
{% set version = "0.0.0.20190828.145.7d2a4e9" %}


package:
name: qnnpack
version: {{ version }}

source:
url: https://github.com/pytorch/qnnpack/archive/{{ gitrev }}.tar.gz
sha256: 0d752bd75f46ce4d7c6f0a60b0d6c0e5918a7b4683c825284f8db3706dd24f76
patches:
- shared_libs.patch

build:
# You can probably build this for windows
skip: true # [win]
number: 0
run_exports:
# 0 guarantees because they beleive in not creating real releases...
# https://github.com/pytorch/qnnpack/issues/84
- {{ pin_subpackage('qnnpack', max_pin='x.x.x.x.x') }}

requirements:
build:
- {{ compiler('c') }}
- {{ compiler('cxx') }}
- cmake
- make # [unix]
host:
- cpuinfo
- pthreadpool
# header only libraries below
- fp16
- fxdiv

test:
commands:
- test -f ${PREFIX}/lib/libqnnpack.so
- test -f ${PREFIX}/include/qnnpack.h

about:
home: https://github.com/pytorch/qnnpack
summary: Quantized Neural Networks PACKage
description: |
QNNPACK (Quantized Neural Networks PACKage) is a mobile-optimized library
for low-precision high-performance neural network inference. QNNPACK
provides implementation of common neural network operators on quantized
8-bit tensors.
license: BSD-3-Clause
license_family: BSD
license_file: LICENSE

extra:
recipe-maintainers:
- hmaarrfk
140 changes: 140 additions & 0 deletions recipes/qnnpack/shared_libs.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a5ddc49..707dae6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -57,56 +57,6 @@ IF(NOT DEFINED CLOG_SOURCE_DIR)
SET(CLOG_SOURCE_DIR "${PROJECT_SOURCE_DIR}/deps/clog")
ENDIF()

-IF(NOT DEFINED CPUINFO_SOURCE_DIR)
- MESSAGE(STATUS "Downloading cpuinfo to ${CONFU_DEPENDENCIES_SOURCE_DIR}/cpuinfo (define CPUINFO_SOURCE_DIR to avoid it)")
- CONFIGURE_FILE(cmake/DownloadCpuinfo.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/cpuinfo-download/CMakeLists.txt")
- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
- WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/cpuinfo-download")
- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
- WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/cpuinfo-download")
- SET(CPUINFO_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/cpuinfo" CACHE STRING "cpuinfo source directory")
-ENDIF()
-
-IF(NOT DEFINED FP16_SOURCE_DIR)
- MESSAGE(STATUS "Downloading FP16 to ${CONFU_DEPENDENCIES_SOURCE_DIR}/fp16 (define FP16_SOURCE_DIR to avoid it)")
- CONFIGURE_FILE(cmake/DownloadFP16.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/fp16-download/CMakeLists.txt")
- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
- WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/fp16-download")
- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
- WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/fp16-download")
- SET(FP16_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/fp16" CACHE STRING "FP16 source directory")
-ENDIF()
-
-IF(NOT DEFINED FXDIV_SOURCE_DIR)
- MESSAGE(STATUS "Downloading FXdiv to ${CONFU_DEPENDENCIES_SOURCE_DIR}/fxdiv (define FXDIV_SOURCE_DIR to avoid it)")
- CONFIGURE_FILE(cmake/DownloadFXdiv.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/fxdiv-download/CMakeLists.txt")
- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
- WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/fxdiv-download")
- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
- WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/fxdiv-download")
- SET(FXDIV_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/fxdiv" CACHE STRING "FXdiv source directory")
-ENDIF()
-
-IF(NOT DEFINED PSIMD_SOURCE_DIR)
- MESSAGE(STATUS "Downloading PSimd to ${CONFU_DEPENDENCIES_SOURCE_DIR}/psimd (define PSIMD_SOURCE_DIR to avoid it)")
- CONFIGURE_FILE(cmake/DownloadPSimd.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/psimd-download/CMakeLists.txt")
- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
- WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/psimd-download")
- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
- WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/psimd-download")
- SET(PSIMD_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/psimd" CACHE STRING "PSimd source directory")
-ENDIF()
-
-IF(NOT DEFINED PTHREADPOOL_SOURCE_DIR)
- MESSAGE(STATUS "Downloading pthreadpool to ${CONFU_DEPENDENCIES_SOURCE_DIR}/pthreadpool (define PTHREADPOOL_SOURCE_DIR to avoid it)")
- CONFIGURE_FILE(cmake/DownloadPThreadPool.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/pthreadpool-download/CMakeLists.txt")
- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
- WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/pthreadpool-download")
- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
- WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/pthreadpool-download")
- SET(PTHREADPOOL_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/pthreadpool" CACHE STRING "pthreadpool source directory")
-ENDIF()
-
IF(QNNPACK_BUILD_TESTS AND NOT DEFINED GOOGLETEST_SOURCE_DIR)
MESSAGE(STATUS "Downloading Google Test to ${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest (define GOOGLETEST_SOURCE_DIR to avoid it)")
CONFIGURE_FILE(cmake/DownloadGoogleTest.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download/CMakeLists.txt")
@@ -284,60 +234,10 @@ ENDIF()
TARGET_LINK_LIBRARIES(qnnpack PRIVATE clog)

# ---[ Configure cpuinfo
-IF(NOT TARGET cpuinfo)
- SET(CPUINFO_BUILD_TOOLS OFF CACHE BOOL "")
- SET(CPUINFO_BUILD_UNIT_TESTS OFF CACHE BOOL "")
- SET(CPUINFO_BUILD_MOCK_TESTS OFF CACHE BOOL "")
- SET(CPUINFO_BUILD_BENCHMARKS OFF CACHE BOOL "")
- ADD_SUBDIRECTORY(
- "${CPUINFO_SOURCE_DIR}"
- "${CONFU_DEPENDENCIES_BINARY_DIR}/cpuinfo")
-ENDIF()
TARGET_LINK_LIBRARIES(qnnpack PRIVATE cpuinfo)

# ---[ Configure pthreadpool
-IF(NOT TARGET pthreadpool)
- SET(PTHREADPOOL_BUILD_TESTS OFF CACHE BOOL "")
- SET(PTHREADPOOL_BUILD_BENCHMARKS OFF CACHE BOOL "")
- ADD_SUBDIRECTORY(
- "${PTHREADPOOL_SOURCE_DIR}"
- "${CONFU_DEPENDENCIES_BINARY_DIR}/pthreadpool")
-ENDIF()
-IF(QNNPACK_CUSTOM_THREADPOOL)
- # Depend on pthreadpool interface, but not on implementation.
- # This is used when QNNPACK user (e.g. Caffe2) provides its own threadpool implementation.
- TARGET_LINK_LIBRARIES(qnnpack PUBLIC pthreadpool_interface)
-ELSE()
- TARGET_LINK_LIBRARIES(qnnpack PUBLIC pthreadpool)
-ENDIF()
-
-# ---[ Configure FXdiv
-IF(NOT TARGET fxdiv)
- SET(FXDIV_BUILD_TESTS OFF CACHE BOOL "")
- SET(FXDIV_BUILD_BENCHMARKS OFF CACHE BOOL "")
- ADD_SUBDIRECTORY(
- "${FXDIV_SOURCE_DIR}"
- "${CONFU_DEPENDENCIES_BINARY_DIR}/fxdiv")
-ENDIF()
-TARGET_LINK_LIBRARIES(qnnpack PRIVATE fxdiv)
-
-# ---[ Configure psimd
-IF(NOT TARGET psimd)
- ADD_SUBDIRECTORY(
- "${PSIMD_SOURCE_DIR}"
- "${CONFU_DEPENDENCIES_BINARY_DIR}/psimd")
-ENDIF()
-TARGET_LINK_LIBRARIES(qnnpack PRIVATE psimd)
-
-# ---[ Configure FP16
-IF(NOT TARGET fp16)
- SET(FP16_BUILD_TESTS OFF CACHE BOOL "")
- SET(FP16_BUILD_BENCHMARKS OFF CACHE BOOL "")
- ADD_SUBDIRECTORY(
- "${FP16_SOURCE_DIR}"
- "${CONFU_DEPENDENCIES_BINARY_DIR}/fp16")
-ENDIF()
-TARGET_LINK_LIBRARIES(qnnpack PRIVATE fp16)
+TARGET_LINK_LIBRARIES(qnnpack PUBLIC pthreadpool)

INSTALL(TARGETS qnnpack
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
diff --git a/deps/clog/CMakeLists.txt b/deps/clog/CMakeLists.txt
index 7465313..5831f62 100644
--- a/deps/clog/CMakeLists.txt
+++ b/deps/clog/CMakeLists.txt
@@ -73,11 +73,6 @@ IF(ANDROID AND NOT CLOG_LOG_TO_STDIO)
TARGET_LINK_LIBRARIES(clog PRIVATE log)
ENDIF()

-INSTALL(TARGETS clog
- LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
- PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
-
# ---[ clog tests
IF(CLOG_BUILD_TESTS)
# ---[ Build google test

0 comments on commit 9d17074

Please sign in to comment.