# 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
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
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()
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()
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()
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}")