Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 27 additions & 30 deletions X/XNNPACK/build_tarballs.jl
Original file line number Diff line number Diff line change
Expand Up @@ -3,66 +3,61 @@
using BinaryBuilder, Pkg

name = "XNNPACK"
version = v"0.0.20200323"
version = v"0.0.20210622" # i.e. https://github.com/google/XNNPACK/tree/79cd5f9e18ad0925ac9a050b00ea5a36230072db

cpuinfo_build_version = v"0.0.20200228"
cpuinfo_build_version = v"0.0.20201217" # https://github.com/google/XNNPACK/blob/79cd5f9e18ad0925ac9a050b00ea5a36230072db/cmake/DownloadCpuinfo.cmake#L15

cpuinfo_compat = [
cpuinfo_build_version,
v"0.0.20200522", # previously released
v"0.0.20200612", # due to pytorch v1.6.0 - v1.7.1, e.g. https://github.com/pytorch/pytorch/tree/v1.6.0/third_party/cpuinfo @ 63b254577ed77a8004a9be6ac707f3dccc4e1fd9
cpuinfo_build_version, # Torch-compatible version, due to pytorch v1.8.0 - v1.12.1, e.g. https://github.com/pytorch/pytorch/tree/v1.8.0/third_party / cpuinfo @ 5916273f79a21551890fd3d56fc5375a78d1598d
]

pthreadpool_build_version = v"0.0.20200302"
pthreadpool_build_version = v"0.0.20201206" # https://github.com/google/XNNPACK/blob/79cd5f9e18ad0925ac9a050b00ea5a36230072db/cmake/DownloadPThreadPool.cmake#L15

pthreadpool_compat = [
pthreadpool_build_version,
v"0.0.20200616", # due to pytorch v1.6.0 - v1.7.1, e.g. https://github.com/pytorch/pytorch/tree/v1.6.0/third_party/pthreadpool @ 029c88620802e1361ccf41d1970bd5b07fd6b7bb
v"0.0.20210414", # Torch-compatible version, due to pytorch v1.9.0 - v1.12.1, e.g. https://github.com/pytorch/pytorch/tree/v1.9.0/third_party / pthreadpool @ a134dd5d4cee80cce15db81a72e7f929d71dd413
]

# Collection of sources required to complete build
sources = [
GitSource("https://github.com/google/XNNPACK.git", "1b354636b5942826547055252f3b359b54acff95"),
GitSource("https://github.com/google/XNNPACK.git", "79cd5f9e18ad0925ac9a050b00ea5a36230072db"),
DirectorySource("./bundled"),
GitSource("https://github.com/pytorch/cpuinfo.git", "d5e37adf1406cf899d7d9ec1d317c47506ccb970"; unpack_target="clog"),
GitSource("https://github.com/Maratyszcza/FP16.git", "ba1d31f5eed2eb4a69e4dea3870a68c7c95f998f"),
GitSource("https://github.com/Maratyszcza/FXdiv.git", "f8c5354679ec2597792bc70a9e06eff50c508b9a"),
GitSource("https://github.com/Maratyszcza/psimd.git", "88882f601f8179e1987b7e7cf4a8012c9080ad44"),
GitSource("https://github.com/Maratyszcza/pthreadpool.git", "ebd50d0cfa3664d454ffdf246fcd228c3b370a11"),
]

# Bash recipe for building across all platforms
script = raw"""
cd $WORKSPACE/srcdir/XNNPACK
atomic_patch -p1 ../patches/xnnpack-disable-fast-math.patch
atomic_patch -p1 ../patches/xnnpack-pic.patch
atomic_patch -p1 ../patches/xnnpack-soversion.patch
atomic_patch -p1 ../patches/xnnpack-freebsd.patch
if [[ $target == aarch64-* ]]; then
atomic_patch -p1 ../patches/xnnpack-disable-neon-fp16-arithmetic.patch
atomic_patch -p1 ../patches/xnnpack-w64-system-libs.patch
C_FLAGS=()
# if [[ $bb_full_target == armv7l-*march+neonvfpv4 ]]; then # Requires build for specific micro-architecture
# atomic_patch -p1 ../patches/xnnpack-arm-exclude-microkernel-srcs.patch
# C_FLAGS+="-DXNN_NO_F32_OPERATORS "
# C_FLAGS+="-DXNN_NO_QS8_OPERATORS "
if [[ $bb_full_target == aarch64-* ]]; then # Building for aarch64-*march+armv8*
atomic_patch -p1 ../patches/xnnpack-aarch64-exclude-microkernel-srcs.patch
atomic_patch -p1 ../patches/xnnpack-aarch64-armv8-exclude-microkernel-srcs.patch
C_FLAGS+="-DXNN_NO_F16_OPERATORS "
C_FLAGS+="-DXNN_NO_F32_OPERATORS "
C_FLAGS+="-DXNN_NO_QS8_OPERATORS "
# elif [[ $bb_full_target == aarch64-apple-*march+apple_m1* ]]; then # Requires build for specific micro-architecture
# atomic_patch -p1 ../patches/xnnpack-aarch64-exclude-microkernel-srcs.patch
# C_FLAGS+="-DXNN_NO_F16_OPERATORS "
fi
mkdir build
cd build
# Omitted cmake define of CPUINFO_SOURCE_DIR as there is a patch for cpuinfo
cmake \
-DCMAKE_INSTALL_PREFIX=$prefix \
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TARGET_TOOLCHAIN} \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_LIBDIR=$libdir \
-DCLOG_SOURCE_DIR=$WORKSPACE/srcdir/clog/cpuinfo \
-DFP16_SOURCE_DIR=$WORKSPACE/srcdir/FP16 \
-DFXDIV_SOURCE_DIR=$WORKSPACE/srcdir/FXdiv \
-DPSIMD_SOURCE_DIR=$WORKSPACE/srcdir/psimd \
-DPTHREADPOOL_SOURCE_DIR=$WORKSPACE/srcdir/pthreadpool \
-DXNNPACK_LIBRARY_TYPE=shared \
-DXNNPACK_BUILD_TESTS=OFF \
-DXNNPACK_BUILD_BENCHMARKS=OFF \
-DXNNPACK_USE_SYSTEM_LIBS=ON \
-DCMAKE_C_FLAGS="$C_FLAGS" \
..
if [[ $target == *-w64-mingw32* ]]; then
cd cpuinfo-source
atomic_patch -p1 ../../../patches/cpuinfo-mingw-lowercase-windows-include.patch
cd ..
fi
cmake --build . -- -j $nproc
make install/local
if [[ $target == *-w64-mingw32 ]]; then
Expand All @@ -74,7 +69,8 @@ install_license ../LICENSE
# These are the platforms we will build for by default, unless further
# platforms are passed in on the command line
platforms = supported_platforms()
filter!(p -> !(Sys.iswindows(p) && arch(p) == "i686"), platforms) # i686-Windows fails to link
filter!(p -> arch(p) != "armv6l", platforms) # armv6l is unsupported by XNNPACK (lacks NEON instructions)
filter!(p -> arch(p) != "armv7l", platforms) # Requires build for specific micro-architecture (neonvfpv4)
filter!(p -> arch(p) != "powerpc64le", platforms) # PowerPC64LE is unsupported by XNNPACK (Unsupported architecture in src/init.c)

# The products that we will ensure are always built
Expand All @@ -83,8 +79,9 @@ products = [
]

# Dependencies that must be installed before this package can be built
dependencies = Dependency[
dependencies = [
Dependency("CPUInfo_jll", cpuinfo_build_version; compat=join(string.(cpuinfo_compat), ", ")),
BuildDependency(PackageSpec("FP16_jll", v"0.0.20210320")),
Dependency("PThreadPool_jll", pthreadpool_build_version; compat=join(string.(pthreadpool_compat), ", ")),
]

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f4c55af4e..6d0f1b9bb 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3437,10 +3437,6 @@ IF(XNNPACK_TARGET_PROCESSOR MATCHES "^(aarch64|arm64)$" OR IOS_ARCH MATCHES "^ar
LIST(APPEND XNNPACK_MICROKERNEL_SRCS ${XNNPACK_NEONFMA_MICROKERNEL_SRCS})
LIST(APPEND XNNPACK_MICROKERNEL_SRCS ${XNNPACK_NEONV8_MICROKERNEL_SRCS})
LIST(APPEND XNNPACK_MICROKERNEL_SRCS ${XNNPACK_AARCH64_NEONFMA_MICROKERNEL_SRCS})
- LIST(APPEND XNNPACK_MICROKERNEL_SRCS ${XNNPACK_NEONDOT_MICROKERNEL_SRCS})
- IF(XNNPACK_ENABLE_ASSEMBLY)
- LIST(APPEND XNNPACK_MICROKERNEL_SRCS ${XNNPACK_AARCH64_ASM_MICROKERNEL_SRCS})
- ENDIF()
ENDIF()
IF(XNNPACK_TARGET_PROCESSOR MATCHES "^(i[3-6]86|x86_64|AMD64)$" OR IOS_ARCH MATCHES "^(i386|x86_64|AMD64)$")
LIST(APPEND XNNPACK_MICROKERNEL_SRCS ${XNNPACK_SSE_MICROKERNEL_SRCS})
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ee2d3f255..c0f1fd4e7 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3437,7 +3437,6 @@ IF(XNNPACK_TARGET_PROCESSOR MATCHES "^(aarch64|arm64)$" OR IOS_ARCH MATCHES "^ar
LIST(APPEND XNNPACK_MICROKERNEL_SRCS ${XNNPACK_NEONFMA_MICROKERNEL_SRCS})
LIST(APPEND XNNPACK_MICROKERNEL_SRCS ${XNNPACK_NEONV8_MICROKERNEL_SRCS})
LIST(APPEND XNNPACK_MICROKERNEL_SRCS ${XNNPACK_AARCH64_NEONFMA_MICROKERNEL_SRCS})
- LIST(APPEND XNNPACK_MICROKERNEL_SRCS ${XNNPACK_AARCH64_NEONFP16ARITH_MICROKERNEL_SRCS})
LIST(APPEND XNNPACK_MICROKERNEL_SRCS ${XNNPACK_NEONDOT_MICROKERNEL_SRCS})
IF(XNNPACK_ENABLE_ASSEMBLY)
LIST(APPEND XNNPACK_MICROKERNEL_SRCS ${XNNPACK_AARCH64_ASM_MICROKERNEL_SRCS})
@@ -3489,9 +3488,6 @@ IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^armv[5-8]" OR IOS_ARCH MATCHES "^armv7")
ENDIF()
ENDIF()
IF(XNNPACK_TARGET_PROCESSOR MATCHES "^(aarch64|arm64)$" OR IOS_ARCH MATCHES "^arm64.*")
- SET_PROPERTY(SOURCE ${XNNPACK_AARCH64_NEONFP16ARITH_MICROKERNEL_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS " -march=armv8.2-a+fp16 ")
- SET_PROPERTY(SOURCE ${XNNPACK_NEONDOT_MICROKERNEL_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS " -march=armv8.2-a+dotprod ")
- SET_PROPERTY(SOURCE ${XNNPACK_AARCH64_ASM_MICROKERNEL_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS " -march=armv8.2-a+fp16+dotprod ")
IF(IOS)
SET_PROPERTY(SOURCE ${XNNPACK_AARCH64_ASM_MICROKERNEL_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS " -arch ${IOS_ARCH} ")
ENDIF()
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 63eb78928..8f00f272d 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3424,10 +3424,6 @@ SET(XNNPACK_MICROKERNEL_SRCS ${XNNPACK_SCALAR_MICROKERNEL_SRCS})
IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^armv[5-8]" OR IOS_ARCH MATCHES "^armv7")
LIST(APPEND XNNPACK_MICROKERNEL_SRCS ${XNNPACK_NEON_MICROKERNEL_SRCS})
LIST(APPEND XNNPACK_MICROKERNEL_SRCS ${XNNPACK_NEONFMA_MICROKERNEL_SRCS})
- LIST(APPEND XNNPACK_MICROKERNEL_SRCS ${XNNPACK_NEONV8_MICROKERNEL_SRCS})
- IF(NOT IOS)
- LIST(APPEND XNNPACK_MICROKERNEL_SRCS ${XNNPACK_NEONDOT_MICROKERNEL_SRCS})
- ENDIF()
IF(XNNPACK_ENABLE_ASSEMBLY)
LIST(APPEND XNNPACK_MICROKERNEL_SRCS ${XNNPACK_AARCH32_ASM_MICROKERNEL_SRCS})
ENDIF()
@@ -3472,12 +3468,10 @@ SET_TARGET_PROPERTIES(XNNPACK PROPERTIES
SOVERSION 0)
IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^armv[5-8]" OR IOS_ARCH MATCHES "^armv7")
SET_PROPERTY(SOURCE ${XNNPACK_MICROKERNEL_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS " -marm ")
- SET_PROPERTY(SOURCE ${XNNPACK_NEON_MICROKERNEL_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS " -march=armv7-a -mfpu=neon ")
- SET_PROPERTY(SOURCE ${XNNPACK_NEONFMA_MICROKERNEL_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS " -march=armv7-a -mfpu=neon-vfpv4 ")
IF(IOS)
SET_PROPERTY(SOURCE ${XNNPACK_NEONV8_MICROKERNEL_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS " -mcpu=cyclone -mtune=generic ")
SET_PROPERTY(SOURCE ${XNNPACK_AARCH32_ASM_MICROKERNEL_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS " -arch ${IOS_ARCH} ")
- ELSE()
+ ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^armv8")
SET_PROPERTY(SOURCE ${XNNPACK_NEONV8_MICROKERNEL_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS " -march=armv8-a -mfpu=neon-fp-armv8 ")
SET_PROPERTY(SOURCE ${XNNPACK_NEONDOT_MICROKERNEL_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS " -march=armv8.2-a+dotprod -mfpu=neon-fp-armv8 ")
ENDIF()
13 changes: 0 additions & 13 deletions X/XNNPACK/bundled/patches/xnnpack-disable-fast-math.patch

This file was deleted.

This file was deleted.

8 changes: 4 additions & 4 deletions X/XNNPACK/bundled/patches/xnnpack-freebsd.patch
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9bcaa5816..56b28ef39 100644
index ee2d3f255..66071856d 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -51,7 +51,7 @@ ENDIF()
@@ -82,7 +82,7 @@ ENDIF()

IF(NOT CMAKE_SYSTEM_NAME)
MESSAGE(FATAL_ERROR "CMAKE_SYSTEM_NAME not defined")
-ELSEIF(NOT CMAKE_SYSTEM_NAME MATCHES "^(Darwin|Linux|Android|Windows)$")
+ELSEIF(NOT CMAKE_SYSTEM_NAME MATCHES "^(Darwin|FreeBSD|Linux|Android|Windows)$")
-ELSEIF(NOT CMAKE_SYSTEM_NAME MATCHES "^(Darwin|Linux|Android|Windows|CYGWIN|MSYS)$")
+ELSEIF(NOT CMAKE_SYSTEM_NAME MATCHES "^(Darwin|FreeBSD|Linux|Android|Windows|CYGWIN|MSYS)$")
MESSAGE(FATAL_ERROR "Unrecognized CMAKE_SYSTEM_NAME = ${CMAKE_SYSTEM_NAME}")
ENDIF()

20 changes: 0 additions & 20 deletions X/XNNPACK/bundled/patches/xnnpack-pic.patch

This file was deleted.

6 changes: 3 additions & 3 deletions X/XNNPACK/bundled/patches/xnnpack-soversion.patch
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9bcaa5816..dbe149f85 100644
index ee2d3f255..f518e92f9 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1507,7 +1507,9 @@ ELSE()
@@ -3467,7 +3467,9 @@ ELSE()
ENDIF()
SET_TARGET_PROPERTIES(XNNPACK PROPERTIES
C_STANDARD 99
Expand All @@ -12,4 +12,4 @@ index 9bcaa5816..dbe149f85 100644
+ SOVERSION 0)
IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^armv[5-8]" OR IOS_ARCH MATCHES "^armv7")
SET_PROPERTY(SOURCE ${XNNPACK_MICROKERNEL_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS " -marm ")
SET_PROPERTY(SOURCE ${XNNPACK_PSIMD_FASTMATH_MICROKERNEL_SRCS} ${XNNPACK_PSIMD_ACCMATH_MICROKERNEL_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS " -mfpu=neon ")
SET_PROPERTY(SOURCE ${XNNPACK_NEON_MICROKERNEL_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS " -march=armv7-a -mfpu=neon ")
20 changes: 20 additions & 0 deletions X/XNNPACK/bundled/patches/xnnpack-w64-system-libs.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ee2d3f255..f97642f91 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3612,6 +3612,7 @@ IF(NOT TARGET cpuinfo)
MESSAGE(FATAL_ERROR "Cannot find cpuinfo")
ENDIF()
SET_PROPERTY(TARGET cpuinfo PROPERTY IMPORTED_LOCATION "${CPUINFO_LIBRARY}")
+ SET_PROPERTY(TARGET cpuinfo PROPERTY IMPORTED_IMPLIB "${CPUINFO_LIBRARY}")
ENDIF()
ENDIF()
TARGET_LINK_LIBRARIES(XNNPACK PRIVATE cpuinfo)
@@ -3632,6 +3633,7 @@ IF(NOT TARGET pthreadpool)
MESSAGE(FATAL_ERROR "Cannot find pthreadpool")
ENDIF()
SET_PROPERTY(TARGET pthreadpool PROPERTY IMPORTED_LOCATION "${PTHREADPOOL_LIBRARY}")
+ SET_PROPERTY(TARGET pthreadpool PROPERTY IMPORTED_IMPLIB "${PTHREADPOOL_LIBRARY}")
ENDIF()
ENDIF()
TARGET_LINK_LIBRARIES(XNNPACK PUBLIC pthreadpool)