diff --git a/Formula/p/pytorch.rb b/Formula/p/pytorch.rb index d6186b17573c..5e7db8a84800 100644 --- a/Formula/p/pytorch.rb +++ b/Formula/p/pytorch.rb @@ -3,10 +3,9 @@ class Pytorch < Formula desc "Tensors and dynamic neural networks" homepage "https://pytorch.org/" - url "https://github.com/pytorch/pytorch/releases/download/v2.2.0/pytorch-v2.2.0.tar.gz" - sha256 "e12d18c3dbb12d7ae2f61f5ab9a21023e3dd179d67ed87279ef96600b9ac08c5" + url "https://github.com/pytorch/pytorch/releases/download/v2.4.1/pytorch-v2.4.1.tar.gz" + sha256 "39666a43c0c10f5fd46c1a7ca95dc74d3bc39de2678b70066481cbf02e58384f" license "BSD-3-Clause" - revision 11 livecheck do url :stable @@ -14,12 +13,12 @@ class Pytorch < Formula end bottle do - sha256 cellar: :any, arm64_sequoia: "aa2d818f038b8ad23fd6492dd4267c7ca1635352c15d4297ad0b609eea053230" - sha256 cellar: :any, arm64_sonoma: "99049d0a87e72b72e03c953c306c3680617d63e45e33b3710f186624cf4fad98" - sha256 cellar: :any, arm64_ventura: "366e9e3d1f95b9c3a523abe64d1afa6234a6308f39cff869d39d4fb639a2340d" - sha256 cellar: :any, sonoma: "8302939a1d0be91aae51dd7bbd60d27069717c3ec18b0f58b679d564d73d85ed" - sha256 cellar: :any, ventura: "7cd0d78ad67980bebd1ebf806f0a470471a0814ace5e50a0dd245b1befed9bcd" - sha256 cellar: :any_skip_relocation, x86_64_linux: "675cac447078658c86fd04b96c2df51f20758d00ef2a372f60e9e18331dc1417" + sha256 cellar: :any, arm64_sequoia: "956e37ef4820981d09bb9e9c6b084091627c5d7166fb253bcd57f67120657b49" + sha256 cellar: :any, arm64_sonoma: "2333261f5c57c67cff39c3d05b742db5b6c2c43e58a91125d6a07fe6f981e292" + sha256 cellar: :any, arm64_ventura: "7c11ebe60fee1ac9366182218da7ff1c9044e3fb5191e922263f3492cb34c39b" + sha256 cellar: :any, sonoma: "9d2e872006b624945f7d74c08cb91f2bbe2673247b1b391e95f811ebe5f9537f" + sha256 cellar: :any, ventura: "1f05e718f8e0bff8b3bdbeb984df8d4fb67c967c15f420eebd6c739297453750" + sha256 cellar: :any_skip_relocation, x86_64_linux: "bf6d94d04895cefd066c55f96ae36917ff626fc5ba798631cdc20b9ab5770f8b" end depends_on "cmake" => :build @@ -42,18 +41,18 @@ class Pytorch < Formula end resource "filelock" do - url "https://files.pythonhosted.org/packages/70/70/41905c80dcfe71b22fb06827b8eae65781783d4a14194bce79d16a013263/filelock-3.13.1.tar.gz" - sha256 "521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e" + url "https://files.pythonhosted.org/packages/9d/db/3ef5bb276dae18d6ec2124224403d1d67bccdbefc17af4cc8f553e341ab1/filelock-3.16.1.tar.gz" + sha256 "c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435" end resource "fsspec" do - url "https://files.pythonhosted.org/packages/28/d3/c2e0403c735548abf991bba3f45ba39194dff4569f76a99fbe77078ba7c5/fsspec-2024.2.0.tar.gz" - sha256 "b6ad1a679f760dda52b1168c859d01b7b80648ea6f7f7c7f5a8a91dc3f3ecb84" + url "https://files.pythonhosted.org/packages/62/7c/12b0943011daaaa9c35c2a2e22e5eb929ac90002f08f1259d69aedad84de/fsspec-2024.9.0.tar.gz" + sha256 "4b0afb90c2f21832df142f292649035d80b421f60a9e1c027802e5a0da2b04e8" end resource "jinja2" do - url "https://files.pythonhosted.org/packages/b2/5e/3a21abf3cd467d7876045335e681d276ac32492febe6d98ad89562d1a7e1/Jinja2-3.1.3.tar.gz" - sha256 "ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90" + url "https://files.pythonhosted.org/packages/ed/55/39036716d19cab0747a5020fc7e907f362fbf48c984b14e62127f7e68e5d/jinja2-3.1.4.tar.gz" + sha256 "4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369" end resource "markupsafe" do @@ -67,8 +66,8 @@ class Pytorch < Formula end resource "networkx" do - url "https://files.pythonhosted.org/packages/c4/80/a84676339aaae2f1cfdf9f418701dd634aef9cc76f708ef55c36ff39c3ca/networkx-3.2.1.tar.gz" - sha256 "9f1bb5cf3409bf324e0a722c20bdb4c20ee39bf1c30ce8ae499c8502b0b5e0c6" + url "https://files.pythonhosted.org/packages/04/e6/b164f94c869d6b2c605b5128b7b0cfe912795a87fc90e78533920001f3ec/networkx-3.3.tar.gz" + sha256 "0c127d8b2f4865f59ae9cb8aafcd60b5c70f3241ebd66f7defad7c4ab90126c9" end resource "opt-einsum" do @@ -83,47 +82,42 @@ class Pytorch < Formula end resource "pyyaml" do - url "https://files.pythonhosted.org/packages/cd/e5/af35f7ea75cf72f2cd079c95ee16797de7cd71f29ea7c68ae5ce7be1eda0/PyYAML-6.0.1.tar.gz" - sha256 "bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43" + url "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz" + sha256 "d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e" end resource "setuptools" do - url "https://files.pythonhosted.org/packages/c8/1f/e026746e5885a83e1af99002ae63650b7c577af5c424d4c27edcf729ab44/setuptools-69.1.1.tar.gz" - sha256 "5c0806c7d9af348e6dd3777b4f4dbb42c7ad85b190104837488eab9a7c945cf8" + url "https://files.pythonhosted.org/packages/27/b8/f21073fde99492b33ca357876430822e4800cdf522011f18041351dfa74b/setuptools-75.1.0.tar.gz" + sha256 "d59a21b17a275fb872a9c3dae73963160ae079f1049ed956880cd7c09b120538" end resource "sympy" do - url "https://files.pythonhosted.org/packages/e5/57/3485a1a3dff51bfd691962768b14310dae452431754bfc091250be50dd29/sympy-1.12.tar.gz" - sha256 "ebf595c8dac3e0fdc4152c51878b498396ec7f30e7a914d6071e674d49420fb8" + url "https://files.pythonhosted.org/packages/11/8a/5a7fd6284fa8caac23a26c9ddf9c30485a48169344b4bd3b0f02fef1890f/sympy-1.13.3.tar.gz" + sha256 "b27fd2c6530e0ab39e275fc9b683895367e51d5da91baa8d3d64db2565fec4d9" end resource "typing-extensions" do - url "https://files.pythonhosted.org/packages/0c/1d/eb26f5e75100d531d7399ae800814b069bc2ed2a7410834d57374d010d96/typing_extensions-4.9.0.tar.gz" - sha256 "23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783" + url "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz" + sha256 "1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8" end - # Support numpy 2.0: https://github.com/pytorch/pytorch/pull/121880 - patch do - url "https://github.com/pytorch/pytorch/commit/38d9bb5abcc31ba97927a5399b88afe2cf60bf64.patch?full_index=1" - sha256 "c9bf84d154e5f3f9b67a68d25765f32a08b9deb3127254971ed6351231eba228" - end - - # Backport usage of SLEEF_CONST from upstream commit - # Ref: https://github.com/pytorch/pytorch/commit/2b060983809e5fe8706acd085fff67b6a27bfb5f - patch :DATA - def install python3 = "python3.12" + # Avoid building AVX512 code + inreplace "cmake/Modules/FindAVX.cmake", /^CHECK_SSE\(CXX "AVX512"/, "#\\0" + ENV["ATEN_NO_TEST"] = "ON" ENV["BLAS"] = "OpenBLAS" ENV["BUILD_CUSTOM_PROTOBUF"] = "OFF" ENV["BUILD_PYTHON"] = "ON" ENV["BUILD_TEST"] = "OFF" ENV["PYTHON_EXECUTABLE"] = which(python3) + ENV["PYTORCH_BUILD_VERSION"] = version.to_s + ENV["PYTORCH_BUILD_NUMBER"] = "1" + ENV["USE_CCACHE"] = "OFF" ENV["USE_CUDA"] = "OFF" ENV["USE_DISTRIBUTED"] = "ON" - ENV["USE_METAL"] = "OFF" ENV["USE_MKLDNN"] = "OFF" ENV["USE_NNPACK"] = "OFF" ENV["USE_OPENMP"] = "ON" @@ -134,7 +128,7 @@ def install # Work around superenv removing `-Werror=` but leaving `-Wno-error=` breaking flag detection if ENV.compiler.to_s.start_with?("gcc") - inreplace "CMakeLists.txt", 'append_cxx_flag_if_supported("-Wno-error=inconsistent-missing-', "# \\0" + inreplace "CMakeLists.txt", /^\s*append_cxx_flag_if_supported\(\s*"-Wno-error=inconsistent-missing-[^)]*\)/, "" end # Avoid references to Homebrew shims @@ -145,7 +139,7 @@ def install venv.pip_install_and_link(buildpath, build_isolation: false) # Expose C++ API - torch = libexec/Language::Python.site_packages(python3)/"torch" + torch = venv.site_packages/"torch" include.install_symlink (torch/"include").children lib.install_symlink (torch/"lib").children (share/"cmake").install_symlink (torch/"share/cmake").children @@ -174,43 +168,12 @@ def install assert isinstance(t, torch.Tensor), "not a tensor" assert torch.distributed.is_available(), "torch.distributed is unavailable" EOS + return unless OS.mac? - if OS.mac? - # test that we have the MPS backend - system libexec/"bin/python", "-c", <<~EOS - import torch - assert torch.backends.mps.is_built(), "MPS backend is not built" - EOS - end + # test that we have the MPS backend + system libexec/"bin/python", "-c", <<~EOS + import torch + assert torch.backends.mps.is_built(), "MPS backend is not built" + EOS end end - -__END__ -diff --git a/aten/src/ATen/cpu/vec/vec256/vec256_bfloat16.h b/aten/src/ATen/cpu/vec/vec256/vec256_bfloat16.h -index 3e26213d6d26609b2cda7bde2d026fc92c626db2..edda0210746530bb60765939e90899083f8be595 100644 ---- a/aten/src/ATen/cpu/vec/vec256/vec256_bfloat16.h -+++ b/aten/src/ATen/cpu/vec/vec256/vec256_bfloat16.h -@@ -265,7 +266,8 @@ static_assert( - } - return b; - } -- Vectorized map(const __m256 (*const vop)(__m256)) const { -+ -+ Vectorized map(SLEEF_CONST __m256 (*vop)(__m256)) const { - __m256 lo, hi; - cvt_to_fp32(values, lo, hi); - const auto o1 = vop(lo); -diff --git a/aten/src/ATen/cpu/vec/vec512/vec512_bfloat16.h b/aten/src/ATen/cpu/vec/vec512/vec512_bfloat16.h -index f9fc92d52bfe0c8ea594384beecf4da47961faa0..6513455283e2be3e588fd15131c5d48a17e107bb 100644 ---- a/aten/src/ATen/cpu/vec/vec512/vec512_bfloat16.h -+++ b/aten/src/ATen/cpu/vec/vec512/vec512_bfloat16.h -@@ -362,7 +363,8 @@ static_assert( - } - #pragma clang diagnostic push - #pragma clang diagnostic ignored "-Wignored-qualifiers" -- Vectorized map(const __m512 (*const vop)(__m512)) const { -+ -+ Vectorized map(SLEEF_CONST __m512 (*vop)(__m512)) const { - __m512 lo, hi; - cvt_to_fp32(values, lo, hi); - const auto o1 = vop(lo); diff --git a/Formula/t/torchvision.rb b/Formula/t/torchvision.rb index 28e55deac05e..3d199797e456 100644 --- a/Formula/t/torchvision.rb +++ b/Formula/t/torchvision.rb @@ -3,10 +3,9 @@ class Torchvision < Formula desc "Datasets, transforms, and models for computer vision" homepage "https://github.com/pytorch/vision" - url "https://github.com/pytorch/vision/archive/refs/tags/v0.17.0.tar.gz" - sha256 "55e395d5c7d9bf7658c82ac633cac2224aa168e1bfe8bb5b2b2a296c792a3500" + url "https://github.com/pytorch/vision/archive/refs/tags/v0.19.1.tar.gz" + sha256 "083e75c467285595ec3eb3c7aa8493c19e53d7eb42f13046fb56a07c8897e5a8" license "BSD-3-Clause" - revision 11 livecheck do url :stable @@ -14,12 +13,12 @@ class Torchvision < Formula end bottle do - sha256 cellar: :any, arm64_sequoia: "812c446f668fa6467a3fbbaed405f16638d51467293c10aa60c75ecfe1fc9873" - sha256 cellar: :any, arm64_sonoma: "c456f270651c12b17afca72e3ebe8940a413cd5739172f5db10b8eced17374a6" - sha256 cellar: :any, arm64_ventura: "610867f01b53419678fe03a7d6650c64c353ee1d1ea18f35b75944571e10991e" - sha256 cellar: :any, sonoma: "f352835f242ea258ae4f39db723fa2e8f686696380954d7409a04b29874a3263" - sha256 cellar: :any, ventura: "1d7a5003c763489d6d5e93a841b08aeb1d8ebbf1a99825768025341754c817a0" - sha256 cellar: :any_skip_relocation, x86_64_linux: "f1a683babdd1acd5a495481b49d003c4b9fcc7705dbfb69eb1711b52a6e69d1a" + sha256 cellar: :any, arm64_sequoia: "5a1b6d729c2e3d039e3ccea262764d442bbd5993815850e762790a52a81ad2a8" + sha256 cellar: :any, arm64_sonoma: "9180e25c850189a8f5bd51512758bfb671e46efadf5ff7609dd34d553060ef6f" + sha256 cellar: :any, arm64_ventura: "69665bfdbc14bc07b6b344a4919c78c6bf89c401b52ffdffd71c441938953312" + sha256 cellar: :any, sonoma: "272f58db99105bceca7e33ebf135f71fbcc6e3900082600d74ee5f12f37397a7" + sha256 cellar: :any, ventura: "db376520a2dc03ac1a2ad7cf742126ec5e138572109f4997d1e9be15365fc907" + sha256 cellar: :any_skip_relocation, x86_64_linux: "6f5de0ae1b6c65a6c14b8b8546e4d4728c047efd0bcc8ca47ff5c5a84b32c94d" end depends_on "cmake" => :build @@ -38,26 +37,6 @@ class Torchvision < Formula depends_on "libomp" end - resource "charset-normalizer" do - url "https://files.pythonhosted.org/packages/63/09/c1bc53dab74b1816a00d8d030de5bf98f724c52c1635e07681d312f20be8/charset-normalizer-3.3.2.tar.gz" - sha256 "f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5" - end - - resource "idna" do - url "https://files.pythonhosted.org/packages/e8/ac/e349c5e6d4543326c6883ee9491e3921e0d07b55fdf3cce184b40d63e72a/idna-3.8.tar.gz" - sha256 "d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603" - end - - resource "requests" do - url "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz" - sha256 "55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760" - end - - resource "urllib3" do - url "https://files.pythonhosted.org/packages/43/6d/fa469ae21497ddc8bc93e5877702dca7cb8f911e337aca7452b5724f1bb6/urllib3-2.2.2.tar.gz" - sha256 "dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168" - end - def install system "cmake", "-S", ".", "-B", "build", *std_cmake_args system "cmake", "--build", "build" @@ -74,9 +53,10 @@ def install # We depend on pytorch, but that's a separate formula, so install a `.pth` file to link them. # This needs to happen _before_ we try to install torchvision. + # NOTE: This is an exception to our usual policy as building `pytorch` is complicated site_packages = Language::Python.site_packages(python3) - pytorch = Formula["pytorch"].opt_libexec - (libexec/site_packages/"homebrew-pytorch.pth").write pytorch/site_packages + pth_contents = "import site; site.addsitedir('#{Formula["pytorch"].opt_libexec/site_packages}')\n" + (venv.site_packages/"homebrew-pytorch.pth").write pth_contents venv.pip_install_and_link(buildpath, build_isolation: false) diff --git a/pypi_formula_mappings.json b/pypi_formula_mappings.json index 044fd38e18b3..0f5b9b2026a3 100644 --- a/pypi_formula_mappings.json +++ b/pypi_formula_mappings.json @@ -675,6 +675,11 @@ "pythran": { "exclude_packages": ["numpy"] }, + "pytorch": { + "package_name": "torch[opt-einsum]", + "extra_packages": ["pyyaml"], + "exclude_packages": ["numpy"] + }, "raven": { "exclude_packages": ["certifi"] },