diff options
| author | Dylan Baker <dylan@pnwbakers.com> | 2025-12-03 10:39:43 -0800 |
|---|---|---|
| committer | Nirbheek Chauhan <nirbheek.chauhan@gmail.com> | 2025-12-05 01:35:06 +0530 |
| commit | 79854e4b8d09744acbe2f2d2c0d43a88b9ab1dcc (patch) | |
| tree | d9b8968c8d40a44ba02082aecd7de1e11fafa6ca | |
| parent | 7c5ab15fb35fda43883ca8da0964cae7c283919b (diff) | |
| download | meson-79854e4b8d09744acbe2f2d2c0d43a88b9ab1dcc.tar.gz | |
modules/cuda: Update arch flags for versions through 13.0
This includes adding Blackwell support, as well as the deprecation of
many older architectures in 12.9 and 13.0
| -rw-r--r-- | mesonbuild/modules/cuda.py | 81 |
1 files changed, 55 insertions, 26 deletions
diff --git a/mesonbuild/modules/cuda.py b/mesonbuild/modules/cuda.py index 8759b019f..5d9ac10a0 100644 --- a/mesonbuild/modules/cuda.py +++ b/mesonbuild/modules/cuda.py @@ -1,5 +1,5 @@ # SPDX-License-Identifier: Apache-2.0 -# Copyright 2017 The Meson development team +# Copyright 2017-2025 The Meson development team from __future__ import annotations @@ -215,42 +215,50 @@ class CudaModule(NewExtensionModule): # except that a bug with cuda_arch_list="All" is worked around by # tracking both lower and upper limits on GPU architectures. - cuda_known_gpu_architectures = ['Fermi', 'Kepler', 'Maxwell'] # noqa: E221 + cuda_known_gpu_architectures = [] # noqa: E221 cuda_common_gpu_architectures = ['3.0', '3.5', '5.0'] # noqa: E221 cuda_hi_limit_gpu_architecture = None # noqa: E221 cuda_lo_limit_gpu_architecture = '2.0' # noqa: E221 cuda_all_gpu_architectures = ['3.0', '3.2', '3.5', '5.0'] # noqa: E221 - if version_compare(cuda_version, '<7.0'): - cuda_hi_limit_gpu_architecture = '5.2' + # Fermi and Kepler support have been dropped since 12.0 + if version_compare(cuda_version, '<12.0'): + cuda_known_gpu_architectures.extend(['Fermi', 'Kepler']) - if version_compare(cuda_version, '>=7.0'): - cuda_known_gpu_architectures += ['Kepler+Tegra', 'Kepler+Tesla', 'Maxwell+Tegra'] # noqa: E221 - cuda_common_gpu_architectures += ['5.2'] # noqa: E221 + # Everything older than Turing is dropped by 13.0 + if version_compare(cuda_version, '<13.0'): + cuda_known_gpu_architectures.append('Maxwell') - if version_compare(cuda_version, '<8.0'): - cuda_common_gpu_architectures += ['5.2+PTX'] # noqa: E221 - cuda_hi_limit_gpu_architecture = '6.0' # noqa: E221 + if version_compare(cuda_version, '<7.0'): + cuda_hi_limit_gpu_architecture = '5.2' - if version_compare(cuda_version, '>=8.0'): - cuda_known_gpu_architectures += ['Pascal', 'Pascal+Tegra'] # noqa: E221 - cuda_common_gpu_architectures += ['6.0', '6.1'] # noqa: E221 - cuda_all_gpu_architectures += ['6.0', '6.1', '6.2'] # noqa: E221 + if version_compare(cuda_version, '>=7.0'): + cuda_known_gpu_architectures += ['Kepler+Tegra', 'Kepler+Tesla', 'Maxwell+Tegra'] # noqa: E221 + cuda_common_gpu_architectures += ['5.2'] # noqa: E221 - if version_compare(cuda_version, '<9.0'): - cuda_common_gpu_architectures += ['6.1+PTX'] # noqa: E221 - cuda_hi_limit_gpu_architecture = '7.0' # noqa: E221 + if version_compare(cuda_version, '<8.0'): + cuda_common_gpu_architectures += ['5.2+PTX'] # noqa: E221 + cuda_hi_limit_gpu_architecture = '6.0' # noqa: E221 - if version_compare(cuda_version, '>=9.0'): - cuda_known_gpu_architectures += ['Volta', 'Xavier'] # noqa: E221 - cuda_common_gpu_architectures += ['7.0'] # noqa: E221 - cuda_all_gpu_architectures += ['7.0', '7.2'] # noqa: E221 - # https://docs.nvidia.com/cuda/archive/9.0/cuda-toolkit-release-notes/index.html#unsupported-features - cuda_lo_limit_gpu_architecture = '3.0' # noqa: E221 + if version_compare(cuda_version, '>=8.0'): + cuda_known_gpu_architectures += ['Pascal', 'Pascal+Tegra'] # noqa: E221 + cuda_common_gpu_architectures += ['6.0', '6.1'] # noqa: E221 + cuda_all_gpu_architectures += ['6.0', '6.1', '6.2'] # noqa: E221 - if version_compare(cuda_version, '<10.0'): - cuda_common_gpu_architectures += ['7.2+PTX'] # noqa: E221 - cuda_hi_limit_gpu_architecture = '8.0' # noqa: E221 + if version_compare(cuda_version, '<9.0'): + cuda_common_gpu_architectures += ['6.1+PTX'] # noqa: E221 + cuda_hi_limit_gpu_architecture = '7.0' # noqa: E221 + + if version_compare(cuda_version, '>=9.0'): + cuda_known_gpu_architectures += ['Volta', 'Xavier'] # noqa: E221 + cuda_common_gpu_architectures += ['7.0'] # noqa: E221 + cuda_all_gpu_architectures += ['7.0', '7.2'] # noqa: E221 + # https://docs.nvidia.com/cuda/archive/9.0/cuda-toolkit-release-notes/index.html#unsupported-features + cuda_lo_limit_gpu_architecture = '3.0' # noqa: E221 + + if version_compare(cuda_version, '<10.0'): + cuda_common_gpu_architectures += ['7.2+PTX'] # noqa: E221 + cuda_hi_limit_gpu_architecture = '8.0' # noqa: E221 if version_compare(cuda_version, '>=10.0'): cuda_known_gpu_architectures += ['Turing'] # noqa: E221 @@ -303,6 +311,26 @@ class CudaModule(NewExtensionModule): if version_compare(cuda_version, '<13'): cuda_hi_limit_gpu_architecture = '10.0' # noqa: E221 + if version_compare(cuda_version, '>=12.8'): + cuda_known_gpu_architectures.append('Blackwell') + cuda_common_gpu_architectures.extend(['10.0', '10.1', '12.0']) + cuda_all_gpu_architectures.extend(['10.0', '10.1', '12.0']) + + if version_compare(cuda_version, '<13'): + cuda_hi_limit_gpu_architecture = '12.1' + + if version_compare(cuda_version, '>=12.9'): + cuda_common_gpu_architectures.extend(['10.3', '12.1']) + cuda_all_gpu_architectures.extend(['10.3', '12.1']) + + if version_compare(cuda_version, '>=13.0'): + cuda_common_gpu_architectures.append('11.0') + cuda_all_gpu_architectures.append('11.0') + cuda_lo_limit_gpu_architecture = '7.5' + + if version_compare(cuda_version, '<14'): + cuda_hi_limit_gpu_architecture = '12.1' + if not cuda_arch_list: cuda_arch_list = 'Auto' @@ -355,6 +383,7 @@ class CudaModule(NewExtensionModule): 'Orin': (['8.7'], []), 'Lovelace': (['8.9'], ['8.9']), 'Hopper': (['9.0'], ['9.0']), + 'Blackwell': (['10.0'], ['10.0']), }.get(arch_name, (None, None)) if arch_bin is None: |
