From 9bfc6605dcee6c1ffc3cbab31e938319e18b4e25 Mon Sep 17 00:00:00 2001 From: Anatoly Myachev Date: Thu, 5 Dec 2024 20:10:39 +0100 Subject: [PATCH 1/7] Reuse 'CLFinder.py' in 'setup.py' Signed-off-by: Anatoly Myachev --- python/{triton/runtime => }/CLFinder.py | 0 python/setup.py | 52 +------------------------ python/triton/runtime/build.py | 2 +- 3 files changed, 3 insertions(+), 51 deletions(-) rename python/{triton/runtime => }/CLFinder.py (100%) diff --git a/python/triton/runtime/CLFinder.py b/python/CLFinder.py similarity index 100% rename from python/triton/runtime/CLFinder.py rename to python/CLFinder.py diff --git a/python/setup.py b/python/setup.py index 4ee43718cb..1c76a3f695 100644 --- a/python/setup.py +++ b/python/setup.py @@ -26,6 +26,8 @@ from setuptools.command.egg_info import egg_info from wheel.bdist_wheel import bdist_wheel +from CLFinder import initialize_visual_studio_env + import pybind11 @@ -103,56 +105,6 @@ def copy_externals(): ] -def find_vswhere(): - program_files = os.environ.get("ProgramFiles(x86)", "C:\\Program Files (x86)") - vswhere_path = Path(program_files) / "Microsoft Visual Studio" / "Installer" / "vswhere.exe" - if vswhere_path.exists(): - return vswhere_path - return None - - -def find_visual_studio(version_ranges): - vswhere = find_vswhere() - if not vswhere: - raise FileNotFoundError("vswhere.exe not found.") - - for version_range in version_ranges: - command = [ - str(vswhere), "-version", version_range, "-requires", "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", - "-products", "*", "-property", "installationPath", "-prerelease" - ] - - try: - output = subprocess.check_output(command, text=True).strip() - if output: - return output.split("\n")[0] - except subprocess.CalledProcessError: - continue - - return None - - -def set_env_vars(vs_path, arch="x64"): - vcvarsall_path = Path(vs_path) / "VC" / "Auxiliary" / "Build" / "vcvarsall.bat" - if not vcvarsall_path.exists(): - raise FileNotFoundError(f"vcvarsall.bat not found in expected path: {vcvarsall_path}") - - command = ["call", vcvarsall_path, arch, "&&", "set"] - output = subprocess.check_output(command, shell=True, text=True) - - for line in output.splitlines(): - if '=' in line: - var, value = line.split('=', 1) - os.environ[var] = value - - -def initialize_visual_studio_env(version_ranges, arch="x64"): - vs_path = find_visual_studio(version_ranges) - if not vs_path: - raise EnvironmentError("Visual Studio not found in specified version ranges.") - set_env_vars(vs_path, arch) - - # Taken from https://github.com/pytorch/pytorch/blob/master/tools/setup_helpers/env.py def check_env_flag(name: str, default: str = "") -> bool: return os.getenv(name, default).upper() in ["ON", "1", "YES", "TRUE", "Y"] diff --git a/python/triton/runtime/build.py b/python/triton/runtime/build.py index b40411aec6..0fbe5c3d4b 100644 --- a/python/triton/runtime/build.py +++ b/python/triton/runtime/build.py @@ -7,7 +7,7 @@ import subprocess import setuptools import platform -from .CLFinder import initialize_visual_studio_env +from ...CLFinder import initialize_visual_studio_env def is_xpu(): From fc920b699811e89c6480957e2864558eae60e3d9 Mon Sep 17 00:00:00 2001 From: Anatoly Myachev Date: Fri, 6 Dec 2024 18:10:04 +0100 Subject: [PATCH 2/7] initialize MSVC env in CI workflow Signed-off-by: Anatoly Myachev --- .github/workflows/build-test-windows.yml | 1 + python/CLFinder.py | 55 ------------------------ python/setup.py | 4 -- python/triton/runtime/build.py | 2 - 4 files changed, 1 insertion(+), 61 deletions(-) delete mode 100644 python/CLFinder.py diff --git a/.github/workflows/build-test-windows.yml b/.github/workflows/build-test-windows.yml index d5b78c1bbe..dd367ac10d 100644 --- a/.github/workflows/build-test-windows.yml +++ b/.github/workflows/build-test-windows.yml @@ -45,6 +45,7 @@ jobs: - name: Build Triton run: | cd ${{ env.NEW_WORKSPACE }} + call "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64 && set cd python pip install -U wheel pybind11 certifi cython cmake setuptools>=65.6.1 python -m certifi diff --git a/python/CLFinder.py b/python/CLFinder.py deleted file mode 100644 index 1a489a2e3c..0000000000 --- a/python/CLFinder.py +++ /dev/null @@ -1,55 +0,0 @@ -import os -import subprocess -from pathlib import Path - - -def find_vswhere(): - program_files = os.environ.get("ProgramFiles(x86)", "C:\\Program Files (x86)") - vswhere_path = Path(program_files) / "Microsoft Visual Studio" / "Installer" / "vswhere.exe" - if vswhere_path.exists(): - return vswhere_path - return None - - -def find_visual_studio(version_ranges): - vswhere = find_vswhere() - if not vswhere: - raise FileNotFoundError("vswhere.exe not found.") - - for version_range in version_ranges: - command = [ - str(vswhere), "-version", version_range, "-requires", "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", - "-products", "*", "-property", "installationPath", "-prerelease" - ] - - try: - output = subprocess.check_output(command, text=True).strip() - if output: - return output.split("\n")[0] - except subprocess.CalledProcessError: - continue - - return None - - -def set_env_vars(vs_path, arch="x64"): - vcvarsall_path = Path(vs_path) / "VC" / "Auxiliary" / "Build" / "vcvarsall.bat" - if not vcvarsall_path.exists(): - raise FileNotFoundError(f"vcvarsall.bat not found in expected path: {vcvarsall_path}") - - command = ["call", vcvarsall_path, arch, "&&", "set"] - output = subprocess.check_output(command, shell=True, text=True) - - for line in output.splitlines(): - if '=' in line: - var, value = line.split('=', 1) - os.environ[var] = value - - -def initialize_visual_studio_env(version_ranges, arch="x64"): - # Check if the environment variable that vcvarsall.bat sets is present - if os.environ.get('VSCMD_ARG_TGT_ARCH') != arch: - vs_path = find_visual_studio(version_ranges) - if not vs_path: - raise EnvironmentError("Visual Studio not found in specified version ranges.") - set_env_vars(vs_path, arch) diff --git a/python/setup.py b/python/setup.py index 1c76a3f695..0bde0f7b1c 100644 --- a/python/setup.py +++ b/python/setup.py @@ -26,8 +26,6 @@ from setuptools.command.egg_info import egg_info from wheel.bdist_wheel import bdist_wheel -from CLFinder import initialize_visual_studio_env - import pybind11 @@ -427,8 +425,6 @@ def get_proton_cmake_args(self): def build_extension(self, ext): lit_dir = shutil.which('lit') ninja_dir = shutil.which('ninja') - if platform.system() == "Windows": - initialize_visual_studio_env(["[17.0,18.0)", "[16.0,17.0)"]) # lit is used by the test suite thirdparty_cmake_args = get_thirdparty_packages([get_llvm_package_info()]) thirdparty_cmake_args += self.get_pybind11_cmake_args() diff --git a/python/triton/runtime/build.py b/python/triton/runtime/build.py index 0fbe5c3d4b..ec294aee71 100644 --- a/python/triton/runtime/build.py +++ b/python/triton/runtime/build.py @@ -7,7 +7,6 @@ import subprocess import setuptools import platform -from ...CLFinder import initialize_visual_studio_env def is_xpu(): @@ -60,7 +59,6 @@ def _build(name, src, srcdir, library_dirs, include_dirs, libraries, extra_compi cc = gcc if gcc is not None else clang if platform.system() == "Windows": cc = "cl" - initialize_visual_studio_env(["[17.0,18.0)", "[16.0,17.0)"]) if cc is None: raise RuntimeError("Failed to find C compiler. Please specify via CC environment variable.") # This function was renamed and made public in Python 3.10 From c994daad44e595d6585f79a3cf01562040ad9b83 Mon Sep 17 00:00:00 2001 From: Anatoly Myachev Date: Fri, 6 Dec 2024 19:09:44 +0100 Subject: [PATCH 3/7] fix for powershell Signed-off-by: Anatoly Myachev --- .github/workflows/build-test-windows.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-test-windows.yml b/.github/workflows/build-test-windows.yml index dd367ac10d..2927086eb0 100644 --- a/.github/workflows/build-test-windows.yml +++ b/.github/workflows/build-test-windows.yml @@ -45,7 +45,13 @@ jobs: - name: Build Triton run: | cd ${{ env.NEW_WORKSPACE }} - call "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64 && set + + cmd /c '"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 && set' | ForEach-Object { + if ($_ -match '^(.*?)=(.*)$') { + [Environment]::SetEnvironmentVariable($matches[1], $matches[2]) + } + } + cd python pip install -U wheel pybind11 certifi cython cmake setuptools>=65.6.1 python -m certifi From 6a89005568c49804ba7bafaf15e8ffbda01db9b1 Mon Sep 17 00:00:00 2001 From: Anatoly Myachev Date: Fri, 6 Dec 2024 20:17:45 +0100 Subject: [PATCH 4/7] Update .github/workflows/build-test-windows.yml Co-authored-by: Pavel Chekin --- .github/workflows/build-test-windows.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/build-test-windows.yml b/.github/workflows/build-test-windows.yml index 2927086eb0..50094c6bfe 100644 --- a/.github/workflows/build-test-windows.yml +++ b/.github/workflows/build-test-windows.yml @@ -46,11 +46,7 @@ jobs: run: | cd ${{ env.NEW_WORKSPACE }} - cmd /c '"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 && set' | ForEach-Object { - if ($_ -match '^(.*?)=(.*)$') { - [Environment]::SetEnvironmentVariable($matches[1], $matches[2]) - } - } + Invoke-BatchFile "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" cd python pip install -U wheel pybind11 certifi cython cmake setuptools>=65.6.1 From 3f86733424f1316455cb7ec0d0d72018a4a0845d Mon Sep 17 00:00:00 2001 From: Anatoly Myachev Date: Fri, 6 Dec 2024 20:21:51 +0100 Subject: [PATCH 5/7] Update .github/workflows/build-test-windows.yml --- .github/workflows/build-test-windows.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-test-windows.yml b/.github/workflows/build-test-windows.yml index 50094c6bfe..402d50c10b 100644 --- a/.github/workflows/build-test-windows.yml +++ b/.github/workflows/build-test-windows.yml @@ -46,7 +46,7 @@ jobs: run: | cd ${{ env.NEW_WORKSPACE }} - Invoke-BatchFile "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" + Invoke-BatchFile "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 cd python pip install -U wheel pybind11 certifi cython cmake setuptools>=65.6.1 From 01429d5f2d9de4bb5e3b71a070fde7fb7bef3e0a Mon Sep 17 00:00:00 2001 From: Anatoly Myachev Date: Sat, 7 Dec 2024 15:15:50 +0100 Subject: [PATCH 6/7] Revert "Update .github/workflows/build-test-windows.yml" This reverts commit 3f86733424f1316455cb7ec0d0d72018a4a0845d. --- .github/workflows/build-test-windows.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-test-windows.yml b/.github/workflows/build-test-windows.yml index 402d50c10b..50094c6bfe 100644 --- a/.github/workflows/build-test-windows.yml +++ b/.github/workflows/build-test-windows.yml @@ -46,7 +46,7 @@ jobs: run: | cd ${{ env.NEW_WORKSPACE }} - Invoke-BatchFile "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 + Invoke-BatchFile "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" cd python pip install -U wheel pybind11 certifi cython cmake setuptools>=65.6.1 From 138390f92de31f607976c5fed8d507c04d9cb22e Mon Sep 17 00:00:00 2001 From: Anatoly Myachev Date: Sat, 7 Dec 2024 15:16:02 +0100 Subject: [PATCH 7/7] Revert "Update .github/workflows/build-test-windows.yml" This reverts commit 6a89005568c49804ba7bafaf15e8ffbda01db9b1. --- .github/workflows/build-test-windows.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-test-windows.yml b/.github/workflows/build-test-windows.yml index 50094c6bfe..2927086eb0 100644 --- a/.github/workflows/build-test-windows.yml +++ b/.github/workflows/build-test-windows.yml @@ -46,7 +46,11 @@ jobs: run: | cd ${{ env.NEW_WORKSPACE }} - Invoke-BatchFile "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" + cmd /c '"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 && set' | ForEach-Object { + if ($_ -match '^(.*?)=(.*)$') { + [Environment]::SetEnvironmentVariable($matches[1], $matches[2]) + } + } cd python pip install -U wheel pybind11 certifi cython cmake setuptools>=65.6.1