Skip to content

Commit 96f307e

Browse files
authored
* Introduce macosx-arm64 builds for PyTorch (pull #1463)
1 parent bfdd494 commit 96f307e

File tree

7 files changed

+33
-21
lines changed

7 files changed

+33
-21
lines changed

.github/workflows/pytorch.yml

+5-1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ jobs:
3232
path: /home/runner/.ccache
3333
- uses: bytedeco/javacpp-presets/.github/actions/deploy-ubuntu@actions
3434
timeout-minutes: 350
35+
macosx-arm64:
36+
runs-on: macos-11
37+
steps:
38+
- uses: bytedeco/javacpp-presets/.github/actions/deploy-macosx@actions
3539
macosx-x86_64:
3640
runs-on: macos-11
3741
# strategy:
@@ -61,7 +65,7 @@ jobs:
6165
- uses: bytedeco/javacpp-presets/.github/actions/deploy-windows@actions
6266
timeout-minutes: 350
6367
redeploy:
64-
needs: [linux-x86_64, macosx-x86_64, windows-x86_64]
68+
needs: [linux-x86_64, macosx-arm64, macosx-x86_64, windows-x86_64]
6569
runs-on: ubuntu-20.04
6670
steps:
6771
- uses: bytedeco/javacpp-presets/.github/actions/redeploy@actions

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11

2+
* Introduce `macosx-arm64` builds for PyTorch ([pull #1463](https://github.com/bytedeco/javacpp-presets/pull/1463))
23
* Reenable `linux-arm64` builds for CPython and NumPy ([pull #1386](https://github.com/bytedeco/javacpp-presets/pull/1386)
34
* Enable Vulkan GPU acceleration for FFmpeg ([pull #1460](https://github.com/bytedeco/javacpp-presets/pull/1460))
45
* Include `timeapi.h` for system API of Windows ([pull #1447](https://github.com/bytedeco/javacpp-presets/pull/1447))

pom.xml

+1
Original file line numberDiff line numberDiff line change
@@ -1467,6 +1467,7 @@
14671467
<module>libraw</module>
14681468
<module>leptonica</module>
14691469
<module>tesseract</module>
1470+
<module>pytorch</module>
14701471
<module>sentencepiece</module>
14711472
</modules>
14721473
<properties>

pytorch/cppbuild.sh

+18-2
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ git submodule foreach --recursive 'git reset --hard'
5656
# https://github.com/pytorch/pytorch/pull/66219
5757
#patch -Np1 < ../../../pytorch.patch
5858

59+
CPYTHON_HOST_PATH="$INSTALL_PATH/../../../cpython/cppbuild/$PLATFORM/host/"
5960
CPYTHON_PATH="$INSTALL_PATH/../../../cpython/cppbuild/$PLATFORM/"
6061
OPENBLAS_PATH="$INSTALL_PATH/../../../openblas/cppbuild/$PLATFORM/"
6162
NUMPY_PATH="$INSTALL_PATH/../../../numpy/cppbuild/$PLATFORM/"
@@ -65,7 +66,12 @@ if [[ -n "${BUILD_PATH:-}" ]]; then
6566
IFS="$BUILD_PATH_SEPARATOR"
6667
for P in $BUILD_PATH; do
6768
if [[ $(find "$P" -name Python.h) ]]; then
68-
CPYTHON_PATH="$P"
69+
if [[ "$(basename $P)" == "$PLATFORM_HOST" ]]; then
70+
CPYTHON_HOST_PATH="$P"
71+
fi
72+
if [[ "$(basename $P)" == "$PLATFORM" ]]; then
73+
CPYTHON_PATH="$P"
74+
fi
6975
elif [[ -f "$P/include/openblas_config.h" ]]; then
7076
OPENBLAS_PATH="$P"
7177
elif [[ -f "$P/python/numpy/core/include/numpy/numpyconfig.h" ]]; then
@@ -75,10 +81,12 @@ if [[ -n "${BUILD_PATH:-}" ]]; then
7581
IFS="$PREVIFS"
7682
fi
7783

84+
CPYTHON_HOST_PATH="${CPYTHON_HOST_PATH//\\//}"
7885
CPYTHON_PATH="${CPYTHON_PATH//\\//}"
7986
OPENBLAS_PATH="${OPENBLAS_PATH//\\//}"
8087
NUMPY_PATH="${NUMPY_PATH//\\//}"
8188

89+
CPYTHON_PATH="$CPYTHON_HOST_PATH"
8290
if [[ -f "$CPYTHON_PATH/include/python3.12/Python.h" ]]; then
8391
# setup.py won't pick up the right libgfortran.so without this
8492
export LD_LIBRARY_PATH="$OPENBLAS_PATH/lib/:$CPYTHON_PATH/lib/:$NUMPY_PATH/lib/"
@@ -115,7 +123,15 @@ case $PLATFORM in
115123
export CC="gcc -m64"
116124
export CXX="g++ -m64"
117125
;;
118-
macosx-*)
126+
macosx-arm64)
127+
export CC="clang"
128+
export CXX="clang++"
129+
export CMAKE_OSX_ARCHITECTURES=arm64 # enable cross-compilation on a x86_64 host machine
130+
export USE_MKLDNN=OFF
131+
export USE_QNNPACK=OFF # not compatible with arm64 as of PyTorch 2.1.2
132+
export CMAKE_OSX_DEPLOYMENT_TARGET=11.00 # minimum needed for arm64 support
133+
;;
134+
macosx-x86_64)
119135
export CC="clang"
120136
export CXX="clang++"
121137
;;

pytorch/platform/gpu/pom.xml

-6
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,6 @@
3131
<artifactId>openblas-platform</artifactId>
3232
<version>0.3.26-${project.parent.version}</version>
3333
</dependency>
34-
<dependency>
35-
<groupId>org.bytedeco</groupId>
36-
<artifactId>numpy-platform</artifactId>
37-
<version>1.26.3-${project.parent.version}</version>
38-
<optional>true</optional>
39-
</dependency>
4034
<dependency>
4135
<groupId>${project.groupId}</groupId>
4236
<artifactId>${javacpp.moduleId}</artifactId>

pytorch/platform/pom.xml

-6
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,6 @@
3030
<artifactId>openblas-platform</artifactId>
3131
<version>0.3.26-${project.parent.version}</version>
3232
</dependency>
33-
<dependency>
34-
<groupId>org.bytedeco</groupId>
35-
<artifactId>numpy-platform</artifactId>
36-
<version>1.26.3-${project.parent.version}</version>
37-
<optional>true</optional>
38-
</dependency>
3933
<dependency>
4034
<groupId>${project.groupId}</groupId>
4135
<artifactId>${javacpp.moduleId}</artifactId>

pytorch/pom.xml

+8-6
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,6 @@
2424
<artifactId>openblas</artifactId>
2525
<version>0.3.26-${project.parent.version}</version>
2626
</dependency>
27-
<dependency>
28-
<groupId>org.bytedeco</groupId>
29-
<artifactId>numpy</artifactId>
30-
<version>1.26.3-${project.parent.version}</version>
31-
<optional>true</optional>
32-
</dependency>
3327
</dependencies>
3428

3529
<build>
@@ -54,6 +48,12 @@
5448
<artifactId>numpy-platform</artifactId>
5549
<version>1.26.3-${project.parent.version}</version>
5650
</dependency>
51+
<dependency>
52+
<groupId>org.bytedeco</groupId>
53+
<artifactId>cpython</artifactId>
54+
<version>3.12.1-${project.parent.version}</version>
55+
<classifier>${os.name}-${os.arch}</classifier>
56+
</dependency>
5757
</dependencies>
5858
<configuration>
5959
<classPaths>
@@ -91,6 +91,8 @@
9191
<buildResource>/${javacpp.platform.library.path}/</buildResource>
9292
<buildResource>/org/bytedeco/openblas/${javacpp.platform}/</buildResource>
9393
<buildResource>/org/bytedeco/cpython/${javacpp.platform}/</buildResource>
94+
<!-- add host cpython for running setup.py when cross-compiling -->
95+
<buildResource>/org/bytedeco/cpython/${os.name}-${os.arch}/</buildResource>
9496
<buildResource>/org/bytedeco/mkldnn/${javacpp.platform}/</buildResource>
9597
<buildResource>/org/bytedeco/numpy/${javacpp.platform}/</buildResource>
9698
</buildResources>

0 commit comments

Comments
 (0)