diff --git a/README.md b/README.md index 22a6290e472..8003b25b17b 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ It supports a wide range of models including LLMs (Large Language Models), CV (C Platform Support: - Operating Systems: - iOS - - Mac + - MacOS (ARM64) - Android - Linux - Microcontrollers diff --git a/docs/source/backends-xnnpack.md b/docs/source/backends-xnnpack.md index 46ab379f186..b6bd1eab7c6 100644 --- a/docs/source/backends-xnnpack.md +++ b/docs/source/backends-xnnpack.md @@ -14,7 +14,7 @@ The XNNPACK delegate is the ExecuTorch solution for CPU execution on mobile CPUs - ARM64 on Android, iOS, macOS, Linux, and Windows. - ARMv7 (with NEON) on Android. - ARMv6 (with VFPv2) on Linux. -- x86 and x86-64 (up to AVX512) on Windows, Linux, macOS, Android, and iOS simulator. +- x86 and x86-64 (up to AVX512) on Windows, Linux, Android. ## Development Requirements diff --git a/docs/source/getting-started.md b/docs/source/getting-started.md index b7a97190b49..be15e7d6ea2 100644 --- a/docs/source/getting-started.md +++ b/docs/source/getting-started.md @@ -10,8 +10,9 @@ The following are required to install the ExecuTorch host libraries, needed to e - Python 3.10 - 3.12 - g++ version 7 or higher, clang++ version 5 or higher, or another C++17-compatible toolchain. -- Linux or MacOS operating system (Arm or x86). - - Windows is supported via WSL. +- Linux (x86_64 or ARM64) or macOS (ARM64). + - Intel-based macOS systems require building PyTorch from source (see [Building From Source](using-executorch-building-from-source.md) for instructions). + - Windows is supported via WSL. ## Installation To use ExecuTorch, you will need to install both the Python package and the appropriate platform-specific runtime libraries. Pip is the recommended way to install the ExecuTorch python package. diff --git a/docs/source/using-executorch-building-from-source.md b/docs/source/using-executorch-building-from-source.md index f3aac4024af..7680e7bb743 100644 --- a/docs/source/using-executorch-building-from-source.md +++ b/docs/source/using-executorch-building-from-source.md @@ -16,7 +16,7 @@ Linux (x86_64) - Ubuntu 20.04.6 LTS+ - RHEL 8+ -macOS (x86_64/M1/M2) +macOS (x86_64/ARM64) - Big Sur (11.0)+ Windows (x86_64) @@ -56,13 +56,27 @@ Or alternatively, [install conda on your machine](https://conda.io/projects/cond conda create -yn executorch python=3.10.0 && conda activate executorch ``` -## Install ExecuTorch pip package from Source +## Install ExecuTorch pip package from source ```bash # Install ExecuTorch pip package and its dependencies, as well as # development tools like CMake. # If developing on a Mac, make sure to install the Xcode Command Line Tools first. + # Intel-based macOS systems require building PyTorch from source (see below) ./install_executorch.sh ``` + + See the [PyTorch instructions](https://github.com/pytorch/pytorch#installation) on how to build PyTorch from source. + + Use the [`--use-pt-pinned-commit` flag](../../install_executorch.py) to install ExecuTorch with an existing PyTorch build: + + ```bash + ./install_executorch.sh --use-pt-pinned-commit + ``` + + For Intel-based macOS systems, use the [`--use-pt-pinned-commit --minimal` flags](../../install_executorch.py): + ```bash + ./install_executorch.sh --use-pt-pinned-commit --minimal + ``` Not all backends are built into the pip wheel by default. You can link these missing/experimental backends by turning on the corresponding cmake flag. For example, to include the MPS backend: diff --git a/docs/source/using-executorch-ios.md b/docs/source/using-executorch-ios.md index 508669112f1..e3668a29e33 100644 --- a/docs/source/using-executorch-ios.md +++ b/docs/source/using-executorch-ios.md @@ -4,7 +4,7 @@ ExecuTorch supports both iOS and macOS via Objective-C, Swift, and C++. ExecuTor ## Integration -The ExecuTorch Runtime for iOS and macOS is distributed as a collection of prebuilt [.xcframework](https://developer.apple.com/documentation/xcode/creating-a-multi-platform-binary-framework-bundle) binary targets. These targets are compatible with both iOS and macOS devices and simulators and are available in both release and debug modes: +The ExecuTorch Runtime for iOS and macOS (ARM64) is distributed as a collection of prebuilt [.xcframework](https://developer.apple.com/documentation/xcode/creating-a-multi-platform-binary-framework-bundle) binary targets. These targets are compatible with both iOS and macOS devices and simulators and are available in both release and debug modes: * `executorch` - Main Runtime components * `backend_coreml` - Core ML backend diff --git a/install_requirements.py b/install_requirements.py index 7d923672009..66768426a99 100644 --- a/install_requirements.py +++ b/install_requirements.py @@ -75,6 +75,15 @@ def python_is_compatible(): def install_requirements(use_pytorch_nightly): + # Skip pip install on Intel macOS if using nightly. + if use_pytorch_nightly and is_intel_mac_os(): + print( + "ERROR: Prebuilt PyTorch wheels are no longer available for Intel-based macOS.\n" + "Please build from source by following https://docs.pytorch.org/executorch/main/using-executorch-building-from-source.html", + file=sys.stderr, + ) + sys.exit(1) + # pip packages needed by exir. TORCH_PACKAGE = [ # Setting use_pytorch_nightly to false to test the pinned PyTorch commit. Note @@ -163,6 +172,17 @@ def install_optional_example_requirements(use_pytorch_nightly): ) +# Prebuilt binaries for Intel-based macOS are no longer available on PyPI; users must compile from source. +# PyTorch stopped building macOS x86_64 binaries since version 2.3.0 (January 2024). +def is_intel_mac_os(): + # Returns True if running on Intel macOS. + return platform.system().lower() == "darwin" and platform.machine().lower() in ( + "x86", + "x86_64", + "i386", + ) + + def main(args): parser = argparse.ArgumentParser() parser.add_argument(