Use 3.27 as the minimum CMake version (#153153)

Update the minimum CMake version to 3.27 because of it provides more CUDA targets such as `CUDA::nvperf_host` so that it is possible to remove some of our forked CUDA modules. See https://github.com/pytorch/pytorch/pull/153783.
It's also possible to facilitate future third-party updates such as FBGEMM (its current shipped version requires 3.21).

Pull Request resolved: https://github.com/pytorch/pytorch/pull/153153
Approved by: https://github.com/malfet
This commit is contained in:
cyy
2025-05-30 11:25:26 +00:00
committed by PyTorch MergeBot
parent 9d6f0d5991
commit 1ece53b157
13 changed files with 56 additions and 21 deletions

View File

@ -31,7 +31,6 @@ elif [[ "$OS_NAME" == *"Ubuntu"* ]]; then
# Comment out nvidia repositories to prevent them from getting apt-get updated, see https://github.com/pytorch/pytorch/issues/74968 # Comment out nvidia repositories to prevent them from getting apt-get updated, see https://github.com/pytorch/pytorch/issues/74968
# shellcheck disable=SC2046 # shellcheck disable=SC2046
sed -i 's/.*nvidia.*/# &/' $(find /etc/apt/ -type f -name "*.list") sed -i 's/.*nvidia.*/# &/' $(find /etc/apt/ -type f -name "*.list")
retry apt-get update retry apt-get update
retry apt-get -y install zip openssl retry apt-get -y install zip openssl
else else
@ -98,6 +97,7 @@ if [[ -z "$PYTORCH_ROOT" ]]; then
exit 1 exit 1
fi fi
pushd "$PYTORCH_ROOT" pushd "$PYTORCH_ROOT"
retry pip install -q cmake
python setup.py clean python setup.py clean
retry pip install -qr requirements.txt retry pip install -qr requirements.txt
case ${DESIRED_PYTHON} in case ${DESIRED_PYTHON} in

View File

@ -92,6 +92,7 @@ if [[ -z "$PYTORCH_ROOT" ]]; then
exit 1 exit 1
fi fi
pushd "$PYTORCH_ROOT" pushd "$PYTORCH_ROOT"
retry pip install -q cmake
python setup.py clean python setup.py clean
retry pip install -qr requirements.txt retry pip install -qr requirements.txt
retry pip install -q numpy==2.0.1 retry pip install -q numpy==2.0.1

View File

@ -1,5 +1,5 @@
boto3==1.35.42 boto3==1.35.42
cmake==3.25.* cmake==3.27.*
expecttest==0.3.0 expecttest==0.3.0
fbscribelogger==0.1.7 fbscribelogger==0.1.7
filelock==3.6.0 filelock==3.6.0

View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.18 FATAL_ERROR) cmake_minimum_required(VERSION 3.27 FATAL_ERROR)
# cmake_policy(SET CMP0022 NEW) cmake_policy(SET CMP0023 NEW) # cmake_policy(SET CMP0022 NEW) cmake_policy(SET CMP0023 NEW)
# Use compiler ID "AppleClang" instead of "Clang" for XCode. Not setting this # Use compiler ID "AppleClang" instead of "Clang" for XCode. Not setting this
@ -6,6 +6,7 @@ cmake_minimum_required(VERSION 3.18 FATAL_ERROR)
# one is detected as "AppleClang". # one is detected as "AppleClang".
cmake_policy(SET CMP0010 NEW) cmake_policy(SET CMP0010 NEW)
cmake_policy(SET CMP0025 NEW) cmake_policy(SET CMP0025 NEW)
cmake_policy(SET CMP0126 OLD)
# Enables CMake to set LTO on compilers other than Intel. # Enables CMake to set LTO on compilers other than Intel.
cmake_policy(SET CMP0069 NEW) cmake_policy(SET CMP0069 NEW)

View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.18 FATAL_ERROR) cmake_minimum_required(VERSION 3.27 FATAL_ERROR)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
if(NOT MSVC) if(NOT MSVC)

View File

@ -4,7 +4,7 @@
# This source code is licensed under the BSD-style license found in the # This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree. # LICENSE file in the root directory of this source tree.
cmake_minimum_required(VERSION 3.18 FATAL_ERROR) cmake_minimum_required(VERSION 3.27 FATAL_ERROR)
include(GNUInstallDirs) include(GNUInstallDirs)

View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.18 FATAL_ERROR) cmake_minimum_required(VERSION 3.27 FATAL_ERROR)
project(c10 CXX) project(c10 CXX)
set(CMAKE_CXX_STANDARD 17 CACHE STRING "The C++ standard whose features are requested to build this target.") set(CMAKE_CXX_STANDARD 17 CACHE STRING "The C++ standard whose features are requested to build this target.")

View File

@ -34,6 +34,27 @@ macro(custom_protobuf_find)
set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON)
if(MSVC) if(MSVC)
foreach(
flag_var
CMAKE_C_FLAGS
CMAKE_C_FLAGS_DEBUG
CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_MINSIZEREL
CMAKE_C_FLAGS_RELWITHDEBINFO
CMAKE_CXX_FLAGS
CMAKE_CXX_FLAGS_DEBUG
CMAKE_CXX_FLAGS_RELEASE
CMAKE_CXX_FLAGS_MINSIZEREL
CMAKE_CXX_FLAGS_RELWITHDEBINFO)
# Replace /Zi and /ZI with /Z7
if(MSVC_Z7_OVERRIDE)
if(${flag_var} MATCHES "/Z[iI]")
string(REGEX REPLACE "/Z[iI]" "/Z7" ${flag_var} "${${flag_var}}")
endif(${flag_var} MATCHES "/Z[iI]")
endif(MSVC_Z7_OVERRIDE)
set(${flag_var} "${${flag_var}} /FS")
endforeach(flag_var)
foreach(flag_var foreach(flag_var
CMAKE_C_FLAGS CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_MINSIZEREL
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL) CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL)
@ -41,15 +62,24 @@ macro(custom_protobuf_find)
string(REGEX REPLACE "/Z[iI7]" "" ${flag_var} "${${flag_var}}") string(REGEX REPLACE "/Z[iI7]" "" ${flag_var} "${${flag_var}}")
endif() endif()
endforeach(flag_var) endforeach(flag_var)
if(MSVC_Z7_OVERRIDE)
foreach(flag_var foreach(
CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELWITHDEBINFO flag_var
CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELWITHDEBINFO) CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
if(${flag_var} MATCHES "/Z[iI]") CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
string(REGEX REPLACE "/Z[iI]" "/Z7" ${flag_var} "${${flag_var}}") CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
endif() CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
endforeach(flag_var) CMAKE_SHARED_LINKER_FLAGS_DEBUG
endif(MSVC_Z7_OVERRIDE) CMAKE_STATIC_LINKER_FLAGS_DEBUG
CMAKE_EXE_LINKER_FLAGS_DEBUG
CMAKE_MODULE_LINKER_FLAGS_DEBUG)
# Switch off incremental linking in debug/relwithdebinfo builds
if(${flag_var} MATCHES "/INCREMENTAL" AND NOT ${flag_var} MATCHES
"/INCREMENTAL:NO")
string(REGEX REPLACE "/INCREMENTAL" "/INCREMENTAL:NO" ${flag_var}
"${${flag_var}}")
endif()
endforeach(flag_var)
endif(MSVC) endif(MSVC)
if(CMAKE_VERSION VERSION_GREATER_EQUAL "4.0.0") if(CMAKE_VERSION VERSION_GREATER_EQUAL "4.0.0")

View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.15) cmake_minimum_required(VERSION 3.18)
set(TORCH_ROOT ${CMAKE_CURRENT_LIST_DIR}/../..) set(TORCH_ROOT ${CMAKE_CURRENT_LIST_DIR}/../..)
set(TEST_ROOT ${TORCH_ROOT}/test/edge) set(TEST_ROOT ${TORCH_ROOT}/test/edge)

View File

@ -60,12 +60,15 @@ class CMake:
cmake3_version = CMake._get_version(which("cmake3")) cmake3_version = CMake._get_version(which("cmake3"))
cmake_version = CMake._get_version(which("cmake")) cmake_version = CMake._get_version(which("cmake"))
_cmake_min_version = LooseVersion("3.18.0") _cmake_min_version = LooseVersion("3.27.0")
if all( if all(
ver is None or ver < _cmake_min_version ver is None or ver < _cmake_min_version
for ver in [cmake_version, cmake3_version] for ver in [cmake_version, cmake3_version]
): ):
raise RuntimeError("no cmake or cmake3 with version >= 3.18.0 found") raise RuntimeError(
"no cmake or cmake3 with version >= 3.27.0 found:"
+ str([cmake_version, cmake3_version])
)
if cmake3_version is None: if cmake3_version is None:
cmake_command = "cmake" cmake_command = "cmake"

View File

@ -2,7 +2,7 @@
# Now it only builds the Torch python bindings. # Now it only builds the Torch python bindings.
if(NOT CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO) if(NOT CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO)
cmake_minimum_required(VERSION 3.18 FATAL_ERROR) cmake_minimum_required(VERSION 3.27 FATAL_ERROR)
project(torch CXX C) project(torch CXX C)
find_package(torch REQUIRED) find_package(torch REQUIRED)
option(USE_CUDA "Use CUDA" ON) option(USE_CUDA "Use CUDA" ON)

View File

@ -1729,7 +1729,7 @@ class CppBuilder:
definitions = " ".join(self._build_option.get_definitions()) definitions = " ".join(self._build_option.get_definitions())
contents = textwrap.dedent( contents = textwrap.dedent(
f""" f"""
cmake_minimum_required(VERSION 3.18 FATAL_ERROR) cmake_minimum_required(VERSION 3.27 FATAL_ERROR)
project(aoti_model LANGUAGES CXX) project(aoti_model LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD 17)

View File

@ -1,5 +1,5 @@
project(libshm C CXX) project(libshm C CXX)
cmake_minimum_required(VERSION 3.18 FATAL_ERROR) cmake_minimum_required(VERSION 3.27 FATAL_ERROR)
set(TORCH_ROOT ${CMAKE_CURRENT_LIST_DIR}/../../../) set(TORCH_ROOT ${CMAKE_CURRENT_LIST_DIR}/../../../)