mirror of
https://github.com/zebrajr/pytorch.git
synced 2025-12-06 12:20:52 +01:00
[OSS] Enable Metal in PyTorch MacOS nightly builds (#63718)
Summary: Build on https://github.com/pytorch/pytorch/pull/63825 Pull Request resolved: https://github.com/pytorch/pytorch/pull/63718 Test Plan: 1.Add `ci/binaries` label to PR, so the CI will build those nightly builds 2.Make sure the following CI jobs build with `USE_PYTORCH_METAL_EXPORT` option is `ON`: ``` ci/circleci: binary_macos_arm64_conda_3_8_cpu_nightly_build ci/circleci: binary_macos_arm64_conda_3_9_cpu_nightly_build ci/circleci: binary_macos_arm64_wheel_3_8_cpu_nightly_build ci/circleci: binary_macos_arm64_wheel_3_9_cpu_nightly_build ci/circleci: binary_macos_conda_3_6_cpu_nightly_build ci/circleci: binary_macos_conda_3_7_cpu_nightly_build ci/circleci: binary_macos_conda_3_8_cpu_nightly_build ci/circleci: binary_macos_conda_3_9_cpu_nightly_build ci/circleci: binary_macos_libtorch_3_7_cpu_nightly_build ci/circleci: binary_macos_wheel_3_6_cpu_nightly_build ci/circleci: binary_macos_wheel_3_7_cpu_nightly_build ci/circleci: binary_macos_wheel_3_8_cpu_nightly_build ci/circleci: binary_macos_wheel_3_9_cpu_nightly_build ``` 3.Test `conda` and `wheel` builds locally on [HelloWorld-Metal](https://github.com/pytorch/ios-demo-app/tree/master/HelloWorld-Metal) demo with [(Prototype) Use iOS GPU in PyTorch](https://pytorch.org/tutorials/prototype/ios_gpu_workflow.html) (1) conda ``` conda install https://15667941-65600975-gh.circle-artifacts.com/0/Users/distiller/project/final_pkgs/pytorch-1.10.0.dev20210826-py3.8_0.tar.bz2 ``` (2) wheel ``` pip3 install https://15598647-65600975-gh.circle-artifacts.com/0/Users/distiller/project/final_pkgs/torch-1.10.0.dev20210824-cp38-none-macosx_10_9_x86_64.whl ``` Reviewed By: xta0 Differential Revision: D30593167 Pulled By: hanton fbshipit-source-id: 471da204e94b29c11301c857c50501307a5f0785
This commit is contained in:
parent
a43e7a51d7
commit
22d38bd10d
|
|
@ -14,6 +14,9 @@ chmod +x "$build_script"
|
|||
# Build
|
||||
cat >"$build_script" <<EOL
|
||||
export PATH="$workdir/miniconda/bin:$PATH"
|
||||
if [[ "$CIRCLE_BRANCH" == "nightly" ]]; then
|
||||
export USE_PYTORCH_METAL_EXPORT=1
|
||||
fi
|
||||
if [[ "$PACKAGE_TYPE" == conda ]]; then
|
||||
"$workdir/builder/conda/build_pytorch.sh"
|
||||
else
|
||||
|
|
|
|||
|
|
@ -214,6 +214,7 @@ option(USE_LMDB "Use LMDB" OFF)
|
|||
option(USE_MAGMA "Use MAGMA" ON)
|
||||
option(USE_METAL "Use Metal for Caffe2 iOS build" ON)
|
||||
option(USE_PYTORCH_METAL "Use Metal for PyTorch iOS build" OFF)
|
||||
option(USE_PYTORCH_METAL_EXPORT "Export Metal models on MacOSX desktop" OFF)
|
||||
option(USE_NATIVE_ARCH "Use -march=native" OFF)
|
||||
cmake_dependent_option(
|
||||
USE_MLCOMPUTE "Use ML Compute for macOS build" ON
|
||||
|
|
@ -688,6 +689,10 @@ if(USE_PYTORCH_METAL)
|
|||
string(APPEND CMAKE_CXX_FLAGS " -DUSE_PYTORCH_METAL")
|
||||
endif()
|
||||
|
||||
if(USE_PYTORCH_METAL_EXPORT)
|
||||
string(APPEND CMAKE_CXX_FLAGS " -DUSE_PYTORCH_METAL_EXPORT")
|
||||
endif()
|
||||
|
||||
if(USE_SOURCE_DEBUG_ON_MOBILE)
|
||||
string(APPEND CMAKE_CXX_FLAGS " -DSYMBOLICATE_MOBILE_DEBUG_HANDLE")
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -167,13 +167,12 @@ else()
|
|||
endif()
|
||||
|
||||
# Metal
|
||||
if(USE_PYTORCH_METAL)
|
||||
if(APPLE)
|
||||
set(all_cpu_cpp ${all_cpu_cpp} ${metal_cpp} ${native_metal_srcs})
|
||||
else()
|
||||
# Add files needed from optimized_for_mobile
|
||||
set(all_cpu_cpp ${all_cpu_cpp} ${metal_cpp} ${metal_prepack_cpp})
|
||||
endif()
|
||||
if(USE_PYTORCH_METAL_EXPORT)
|
||||
# Add files needed from exporting metal models(optimized_for_mobile)
|
||||
set(all_cpu_cpp ${all_cpu_cpp} ${metal_cpp} ${metal_prepack_cpp})
|
||||
elseif(APPLE AND USE_PYTORCH_METAL)
|
||||
# Compile Metal kernels
|
||||
set(all_cpu_cpp ${all_cpu_cpp} ${metal_cpp} ${native_metal_srcs})
|
||||
else()
|
||||
set(all_cpu_cpp ${all_cpu_cpp} ${metal_cpp})
|
||||
endif()
|
||||
|
|
@ -450,13 +449,21 @@ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/cmake-exports/ATenConfig.cmake"
|
|||
set(INSTALL_HEADERS ${base_h} ${ATen_CORE_HEADERS})
|
||||
if(NOT INTERN_BUILD_MOBILE)
|
||||
list(APPEND INSTALL_HEADERS ${native_h} ${native_cpu_h} ${native_ao_sparse_h} ${native_quantized_h} ${cuda_h} ${native_cuda_h} ${native_hip_h} ${cudnn_h} ${hip_h} ${miopen_h})
|
||||
# Metal
|
||||
if(USE_PYTORCH_METAL_EXPORT)
|
||||
# Add files needed from exporting metal models(optimized_for_mobile)
|
||||
list(APPEND INSTALL_HEADERS ${metal_h} ${metal_prepack_h})
|
||||
elseif(APPLE AND USE_PYTORCH_METAL)
|
||||
# Needed by Metal kernels
|
||||
list(APPEND INSTALL_HEADERS ${metal_h} ${native_metal_h})
|
||||
else()
|
||||
list(APPEND INSTALL_HEADERS ${metal_h})
|
||||
endif()
|
||||
else()
|
||||
if(USE_PYTORCH_METAL)
|
||||
if(IOS)
|
||||
if(IOS AND USE_PYTORCH_METAL)
|
||||
list(APPEND INSTALL_HEADERS ${metal_h} ${native_metal_h})
|
||||
else()
|
||||
else()
|
||||
list(APPEND INSTALL_HEADERS ${metal_h} ${metal_prepack_h})
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
|
|
|||
|
|
@ -131,6 +131,7 @@ function(caffe2_print_configuration_summary)
|
|||
endif()
|
||||
message(STATUS " USE_METAL : ${USE_METAL}")
|
||||
message(STATUS " USE_PYTORCH_METAL : ${USE_PYTORCH_METAL}")
|
||||
message(STATUS " USE_PYTORCH_METAL_EXPORT : ${USE_PYTORCH_METAL_EXPORT}")
|
||||
message(STATUS " USE_FFTW : ${USE_FFTW}")
|
||||
message(STATUS " USE_MKL : ${CAFFE2_USE_MKL}")
|
||||
message(STATUS " USE_MKLDNN : ${USE_MKLDNN}")
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user