diff --git a/.gitignore b/.gitignore index c424df5..5fda907 100644 --- a/.gitignore +++ b/.gitignore @@ -26,8 +26,3 @@ /kineto-5e75018.tar.gz /pytorch-v2.8.0.tar.gz /v1.18.0.tar.gz -/pytorch-715dca6.tar.gz -/pytorch-fd36458.tar.gz -/pytorch-0fabc3b.tar.gz -/pytorch-v2.9.0.tar.gz -/pytorch-v2.9.1.tar.gz diff --git a/pyproject.toml b/pyproject.toml index 925742b..ccf9c2a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,105 +1,49 @@ -# Package ###################################################################### - -[build-system] -requires = [ - # 70.1.0: min version for integrated bdist_wheel command from wheel package - # 77.0.0: min version for SPDX expression support for project.license - "setuptools>=70.1.0,<80.0", - "cmake>=3.27", - "ninja", - "numpy", - "packaging", - "pyyaml", - "requests", - "six", # dependency chain: NNPACK -> PeachPy -> six - "typing-extensions>=4.10.0", -] -build-backend = "setuptools.build_meta" - -[dependency-groups] -dev = [ - # This list should be kept in sync with the requirements-build.txt - # in PyTorch root until the project fully migrates to pyproject.toml - # after which this can be removed as it is already specified in the - # [build-system] section - "setuptools>=70.1.0,<80.0", # setuptools develop deprecated on 80.0 - "cmake>=3.27", - "ninja", - "numpy", - "packaging", - "pyyaml", - "requests", - "six", # dependency chain: NNPACK -> PeachPy -> six - "typing-extensions>=4.10.0", - - # This list should be kept in sync with the requirements.txt in - # PyTorch root until the project fully migrates to pyproject.toml - "build[uv]", - "expecttest>=0.3.0", - "filelock", - "fsspec>=0.8.5", - "hypothesis", - "jinja2", - "lintrunner; platform_machine != 's390x' and platform_machine != 'riscv64'", - "networkx>=2.5.1", - "optree>=0.13.0", - "psutil", - "sympy>=1.13.3", - "typing-extensions>=4.13.2", - "wheel", -] - [project] name = "torch" -description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration" -readme = "README.md" -requires-python = ">=3.10" -# TODO: change to `license = "BSD-3-Clause"` and enable PEP 639 after pinning setuptools>=77 -# FIXME: As of 2025.06.20, it is hard to ensure the minimum version of setuptools in our CI environment. -# TOML-table-based license deprecated in setuptools>=77, and the deprecation warning will be changed -# to an error on 2026.02.18. See also: https://github.com/pypa/setuptools/issues/4903 -license = { text = "BSD-3-Clause" } -authors = [{ name = "PyTorch Team", email = "packages@pytorch.org" }] -keywords = ["pytorch", "machine learning"] -classifiers = [ - "Development Status :: 5 - Production/Stable", - "Intended Audience :: Developers", - "Intended Audience :: Education", - "Intended Audience :: Science/Research", - "Topic :: Scientific/Engineering", - "Topic :: Scientific/Engineering :: Mathematics", - "Topic :: Scientific/Engineering :: Artificial Intelligence", - "Topic :: Software Development", - "Topic :: Software Development :: Libraries", - "Topic :: Software Development :: Libraries :: Python Modules", - "Programming Language :: C++", - "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", - "Programming Language :: Python :: 3.12", - "Programming Language :: Python :: 3.13", - "Programming Language :: Python :: 3.14", -] +requires-python = ">=3.9" +license = {text = "BSD-3-Clause"} dynamic = [ + "authors", + "classifiers", "entry-points", "dependencies", + "description", + "keywords", + "optional-dependencies", + "readme", "scripts", "version", ] [project.urls] -Homepage = "https://pytorch.org" -Repository = "https://github.com/pytorch/pytorch" -Documentation = "https://pytorch.org/docs" -"Issue Tracker" = "https://github.com/pytorch/pytorch/issues" -Forum = "https://discuss.pytorch.org" +Homepage = "https://pytorch.org/" +Documentation = "https://pytorch.org/docs/" +Source = "https://github.com/pytorch/pytorch" +Forum = "https://discuss.pytorch.org/" -[project.optional-dependencies] -optree = ["optree>=0.13.0"] -opt-einsum = ["opt-einsum>=3.3"] -pyyaml = ["pyyaml"] -# Linter tools ################################################################# +[build-system] +requires = [ + # After 75.8.2 dropped dep disttools API. Please fix + # API temporarily restored and shim used. Please fix + # Setuptools will drop support for setup.py past 80 + # min version for recursive glob package data support + "setuptools>=62.3.0,<80.0", + "wheel", + "astunparse", + "numpy", + "ninja", + "pyyaml", + "cmake", + "typing-extensions>=4.10.0", + "requests", +] +# Use legacy backend to import local packages in setup.py +build-backend = "setuptools.build_meta:__legacy__" + + +[tool.black] +line-length = 88 [tool.isort] src_paths = ["caffe2", "torch", "torchgen", "functorch", "test"] @@ -115,10 +59,12 @@ multi_line_output = 3 include_trailing_comma = true combine_as_imports = true + [tool.usort.known] first_party = ["caffe2", "torch", "torchgen", "functorch", "test"] standard_library = ["typing_extensions"] + [tool.ruff] line-length = 88 src = ["caffe2", "torch", "torchgen", "functorch", "test"] @@ -159,7 +105,6 @@ ignore = [ "E741", "EXE001", "F405", - "FURB122", # writelines # these ignores are from flake8-logging-format; please fix! "G101", # these ignores are from ruff NPY; please fix! @@ -182,15 +127,7 @@ ignore = [ "SIM117", "SIM118", "UP007", # keep-runtime-typing - "UP045", # keep-runtime-typing "TC006", - # TODO: Remove Python-3.10 specific suppressions - "B905", - "UP035", - "UP036", - "UP038", - "UP041", - "FURB161", ] select = [ "B", @@ -271,10 +208,6 @@ select = [ "YTT", ] -[tool.ruff.lint.pyupgrade] -# Preserve types, even if a file imports `from __future__ import annotations`. -keep-runtime-typing = true - [tool.ruff.lint.per-file-ignores] "__init__.py" = [ "F401", diff --git a/python-torch.spec b/python-torch.spec index d3c31d7..de807e5 100644 --- a/python-torch.spec +++ b/python-torch.spec @@ -6,17 +6,16 @@ # So pre releases can be tried %bcond_with gitcommit %if %{with gitcommit} -# v2.9.0-rc9 -%global commit0 0fabc3ba44823f257e70ce397d989c8de5e362c1 +# v2.8.0-rc8 +%global commit0 a1cb3cc05d46d198467bebbb6e8fba50a325d4e7 %global shortcommit0 %(c=%{commit0}; echo ${c:0:7}) -%global date0 20251008 -%global pypi_version 2.9.0 +%global date0 20250723 +%global pypi_version 2.8.0 %global flatbuffers_version 24.12.23 %global miniz_version 3.0.2 %global pybind11_version 2.13.6 -%global rc_tag -rc9 %else -%global pypi_version 2.9.1 +%global pypi_version 2.8.0 %global flatbuffers_version 24.12.23 %global miniz_version 3.0.2 %global pybind11_version 2.13.6 @@ -104,11 +103,25 @@ Source70: https://github.com/yhirose/cpp-httplib/archive/%{hl_commit}/cpp- Source80: https://github.com/pytorch/kineto/archive/%{ki_commit}/kineto-%{ki_scommit}.tar.gz %endif +%if %{without onnx} %global ox_ver 1.18.0 Source90: https://github.com/onnx/onnx/archive/refs/tags/v%{ox_ver}.tar.gz +%endif -%global pt_arches x86_64 aarch64 -ExclusiveArch: %pt_arches +# https://github.com/pytorch/pytorch/issues/150187 +Patch11: 0001-Add-cmake-variable-USE_ROCM_CK.patch +# https://github.com/pytorch/pytorch/issues/156595 +# Patch12: 0001-Use-horrible-dynamo-stub.patch +Patch12: 0001-Fix-compilation-and-import-torch-issues-for-cpython-.patch + +# 2.8 has this problem on aarch64 +# /builddir/build/BUILD/pytorch-v2.8.0/c10/util/FunctionRef.h:45:3: error: unrecognizable insn: +# (insn 3196 3195 3197 78 (set (reg:VNx8BF 1368 [ _494 ]) +# (unspec:VNx8BF [ +# (reg:VNx8BF 1374) +# (reg:VNx8BF 1375) +# ] UNSPEC_IORF)) "/builddir/build/BUILD/pytorch-v2.8.0/aten/src/ATen/cpu/vec/sve/vec_bfloat16.h":228:31 discrim 1 -1 +ExclusiveArch: x86_64 %global toolchain gcc %global _lto_cflags %nil @@ -126,7 +139,6 @@ BuildRequires: gloo-devel BuildRequires: json-devel BuildRequires: libomp-devel -BuildRequires: moodycamel-concurrentqueue-devel BuildRequires: numactl-devel BuildRequires: ninja-build %if %{with onnx} @@ -173,8 +185,7 @@ BuildRequires: hiprand-devel BuildRequires: hipsparse-devel BuildRequires: hipsparselt-devel BuildRequires: hipsolver-devel -# Magma is broken on ROCm 7 -# BuildRequires: magma-devel +BuildRequires: magma-devel BuildRequires: miopen-devel BuildRequires: rocblas-devel BuildRequires: rocrand-devel @@ -489,27 +500,16 @@ sed -i -e 's@HIP 1.0@HIP MODULE@' cmake/public/LoadHIP.cmake %endif -# moodycamel include path needs adjusting to use the system's -sed -i -e 's@${PROJECT_SOURCE_DIR}/third_party/concurrentqueue@/usr/include/concurrentqueue@' cmake/Dependencies.cmake - %build -# Export the arches -# echo "%%pytorch_arches %pt_arches" > macros.pytorch - # # Control the number of jobs # # The build can fail if too many threads exceed the physical memory -# Run at least one thread, more if CPU & memory resources are available. +# So count core and and memory and increase the build memory util the build succeeds # -%ifarch x86_64 # Real cores, No hyperthreading COMPILE_JOBS=`cat /proc/cpuinfo | grep -m 1 'cpu cores' | awk '{ print $4 }'` -%else -# cpuinfo format varies on other arches, fall back to nproc -COMPILE_JOBS=`nproc` -%endif if [ ${COMPILE_JOBS}x = x ]; then COMPILE_JOBS=1 fi @@ -613,16 +613,12 @@ export BUILD_TEST=ON %if %{with rocm} export USE_ROCM=ON -export USE_ROCM_CK_SDPA=OFF -export USE_ROCM_CK_GEMM=OFF -export USE_FBGEMM_GENAI=OFF - -# Magma is broken on ROCm 7 -# export USE_MAGMA=ON +export USE_ROCM_CK=OFF +export USE_MAGMA=ON export HIP_PATH=`hipconfig -p` export ROCM_PATH=`hipconfig -R` -#RESOURCE_DIR=`%{rocmllvm_bindir}/clang -print-resource-dir` -#export DEVICE_LIB_PATH=${RESOURCE_DIR}/amdgcn/bitcode +RESOURCE_DIR=`%{rocmllvm_bindir}/clang -print-resource-dir` +export DEVICE_LIB_PATH=${RESOURCE_DIR}/amdgcn/bitcode # pytorch uses clang, not hipcc export HIP_CLANG_PATH=%{rocmllvm_bindir} @@ -639,17 +635,13 @@ export PYTORCH_ROCM_ARCH=%{rocm_gpu_list_default} %install -# pytorch rpm macros -# install -Dpm 644 macros.pytorch \ -# %{buildroot}%{_rpmmacrodir}/macros.pytorch - %if %{with rocm} export USE_ROCM=ON export USE_ROCM_CK=OFF export HIP_PATH=`hipconfig -p` export ROCM_PATH=`hipconfig -R` -# RESOURCE_DIR=`%{rocmllvm_bindir}/clang -print-resource-dir` -# export DEVICE_LIB_PATH=${RESOURCE_DIR}/amdgcn/bitcode +RESOURCE_DIR=`%{rocmllvm_bindir}/clang -print-resource-dir` +export DEVICE_LIB_PATH=${RESOURCE_DIR}/amdgcn/bitcode # pytorch uses clang, not hipcc export HIP_CLANG_PATH=%{rocmllvm_bindir} @@ -675,6 +667,7 @@ export PYTORCH_ROCM_ARCH=%{rocm_gpu_list_default} %license LICENSE %doc README.md %{_bindir}/torchrun +%{_bindir}/torchfrtrace %{python3_sitearch}/%{pypi_name}* %{python3_sitearch}/functorch diff --git a/sources b/sources index 9a3681f..5c15ab4 100644 --- a/sources +++ b/sources @@ -12,8 +12,3 @@ SHA512 (v24.12.23.tar.gz) = f97762ba41b9cfef648e93932fd789324c6bb6ebc5b7aeca8185 SHA512 (kineto-5e75018.tar.gz) = 921b96a56e01d69895b79e67582d8977ed6f873573ab41557c5d026ada5d1f6365e4ed0a0c6804057c52e92510749fc58619f554a164c1ba9d8cd13e789bebd0 SHA512 (pytorch-v2.8.0.tar.gz) = 791e658eab87fb957f025558cb9f925078d2426ab7b6f60771d9841dfb691f67d905ba1330a800008efe7c938b6c69bdc52232bccfe8d4860e795a532cd69d28 SHA512 (v1.18.0.tar.gz) = 2f38664947c8d1efc40620a7c1b1953d2aa4b0a37b67c4886b86e77c1d697363c26413413ddda8eabc545892fb1bcb43afc7e93e62f0901527524a2727e1ea8d -SHA512 (pytorch-715dca6.tar.gz) = 09c9aae54fab3eb17901fc3226fece1c13f41cb8e45a2cb066021823abeb8d27c340993088e01d8e55bb37ed5f94334ec31e6c539cddfacbad157abd27c5e907 -SHA512 (pytorch-fd36458.tar.gz) = acbb7475b92ad4a8e8d779f3745da22d8438e4c5ef2d6e76d71c987789f2752c8aef7022c87c9a74640fe4f9c1f1a61a3f12a796f63b1e6be24da8e5aacf37dc -SHA512 (pytorch-0fabc3b.tar.gz) = 2e87975de0bf6f3dcede168b379e1928712bca16170c2a8ee7d63459f53086c01baac05e0763e4d5d28cdaf1c7d8912225ee06adeff96ead4f6f456ee174b341 -SHA512 (pytorch-v2.9.0.tar.gz) = ae989e3a7fe30f9ea90944dc25e21ca92f2a94ee40d8de974a168c292d82c16ee8920624eff91a85755469ad05473dce0f85893e3ed7794ec5c6bdd89cbd2023 -SHA512 (pytorch-v2.9.1.tar.gz) = 88de0289fa2760abd69bef505b5ae3b6d7ff176b415cbb31bbc89ce5476a3800b322a97c4490f270f8b89657aff931bf9a5516202b268e0bb8b1f63dbb87b34a