diff --git a/.github/workflows/build-test-reusable.yml b/.github/workflows/build-test-reusable.yml index 49d2fcf566..c72a06ebbe 100644 --- a/.github/workflows/build-test-reusable.yml +++ b/.github/workflows/build-test-reusable.yml @@ -255,7 +255,7 @@ jobs: pip install intel_pti-*.whl PTI_LIBS_DIR=$(python ./scripts/pti_lib.py) ls $PTI_LIBS_DIR - echo "PTI_LIBS_DIR=$PTI_LIBS_DIR" | tee -a $GITHUB_ENV + echo "LD_LIBRARY_PATH=$PTI_LIBS_DIR:$LD_LIBRARY_PATH" | tee -a $GITHUB_ENV - name: Report environment details timeout-minutes: 1 @@ -294,7 +294,6 @@ jobs: - name: Run Proton tests if: matrix.suite == 'rest' run: | - export LD_LIBRARY_PATH=${{ env.PTI_LIBS_DIR }}:$LD_LIBRARY_PATH cd third_party/proton/test pytest test_api.py test_cmd.py test_lib.py test_profile.py test_viewer.py --device xpu -s -v cd .. diff --git a/.github/workflows/build-test-windows.yml b/.github/workflows/build-test-windows.yml index f59e4b860d..21bdf9c383 100644 --- a/.github/workflows/build-test-windows.yml +++ b/.github/workflows/build-test-windows.yml @@ -123,6 +123,16 @@ jobs: pip install -U pybind11 cmake pip install -v '.[build,tests,tutorials]' + - name: Build && Install PTI + run: | + .venv\Scripts\activate.ps1 + Invoke-BatchFile "C:\Program Files (x86)\Intel\oneAPI\setvars.bat" + cd ${{ env.NEW_WORKSPACE }} + bash -c './scripts/install-pti.sh --build-level-zero' + $PTI_LIBS_DIR = python ./scripts/pti_lib.py + ls $PTI_LIBS_DIR + echo "PATH=$PTI_LIBS_DIR;$env:PATH" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + - name: Triton version run: | .venv\Scripts\activate.ps1 diff --git a/.github/workflows/pip-test-windows.yml b/.github/workflows/pip-test-windows.yml index 854a9e11c2..9f42617ae1 100644 --- a/.github/workflows/pip-test-windows.yml +++ b/.github/workflows/pip-test-windows.yml @@ -101,6 +101,16 @@ jobs: .venv\Scripts\activate.ps1 python -c 'import triton; print(triton.__version__)' + - name: Build && Install PTI + run: | + .venv\Scripts\activate.ps1 + Invoke-BatchFile "C:\Program Files (x86)\Intel\oneAPI\setvars.bat" + cd ${{ env.NEW_WORKSPACE }} + bash -c './scripts/install-pti.sh --build-level-zero' + $PTI_LIBS_DIR = python ./scripts/pti_lib.py + ls $PTI_LIBS_DIR + echo "PATH=$PTI_LIBS_DIR;$env:PATH" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + - name: Install test dependencies run: | .venv\Scripts\activate.ps1 diff --git a/.github/workflows/pip-test.yml b/.github/workflows/pip-test.yml index c97cfc9de9..055e44a87a 100644 --- a/.github/workflows/pip-test.yml +++ b/.github/workflows/pip-test.yml @@ -55,6 +55,13 @@ jobs: - name: Install Triton uses: ./.github/actions/setup-triton + - name: Build && Install PTI + run: | + ./scripts/install-pti.sh --build-level-zero + PTI_LIBS_DIR=$(python ./scripts/pti_lib.py) + ls $PTI_LIBS_DIR + echo "LD_LIBRARY_PATH=$PTI_LIBS_DIR:$LD_LIBRARY_PATH" | tee -a $GITHUB_ENV + - name: Install runtime dependencies run: | curl -sSLO --retry 10 https://raw.githubusercontent.com/pytorch/pytorch/$(<.github/pins/pytorch.txt)/.github/scripts/generate_binary_build_matrix.py diff --git a/python/test/unit/language/test_subprocess.py b/python/test/unit/language/test_subprocess.py index 36fa72ff28..4dcc53b809 100644 --- a/python/test/unit/language/test_subprocess.py +++ b/python/test/unit/language/test_subprocess.py @@ -53,9 +53,6 @@ def test_print(func_type: str, data_type: str, device: str): return outs = [line for line in proc.stdout.decode("UTF-8").splitlines() if line] - # FIXME: workaround for DLE 2025.2, namely PTI 0.13.1 - # https://github.com/intel/intel-xpu-backend-for-triton/issues/4998 - outs = filter(lambda elem: "Another subscriber already subscribed to Sycl runtime events" not in elem, outs) # The total number of elements in the 1-D tensor to print. N = 128 diff --git a/scripts/install-pti.sh b/scripts/install-pti.sh index bb32cfe071..eec633f338 100755 --- a/scripts/install-pti.sh +++ b/scripts/install-pti.sh @@ -43,9 +43,23 @@ function build_level_zero { LEVEL_ZERO_VERSION=1.24.2 LEVEL_ZERO_SHA256=b77e6e28623134ee4e99e2321c127b554bdd5bfa3e80064922eba293041c6c52 - wget --progress=dot:giga -e use_proxy=yes "https://github.com/oneapi-src/level-zero/archive/refs/tags/v${LEVEL_ZERO_VERSION}.tar.gz" - echo "${LEVEL_ZERO_SHA256} v${LEVEL_ZERO_VERSION}.tar.gz" > "v${LEVEL_ZERO_VERSION}.tar.gz.sha256" - sha256sum -c "v${LEVEL_ZERO_VERSION}.tar.gz.sha256" + if [[ $OSTYPE = msys ]]; then + pwsh -Command \ + "Invoke-WebRequest -Uri 'https://github.com/oneapi-src/level-zero/archive/refs/tags/v${LEVEL_ZERO_VERSION}.tar.gz' -OutFile 'v${LEVEL_ZERO_VERSION}.tar.gz'" + ls . -alh + FILE_HASH=$(pwsh -Command "Get-FileHash -Algorithm SHA256 v${LEVEL_ZERO_VERSION}.tar.gz | Select-Object -ExpandProperty Hash") + # convert to lowercase + FILE_HASH=${FILE_HASH,,} + echo $FILE_HASH + if [[ "$FILE_HASH" != "${LEVEL_ZERO_SHA256}" ]]; then + echo "ERROR: Checksum does not match!" + exit 1 + fi + else + wget "https://github.com/oneapi-src/level-zero/archive/refs/tags/v${LEVEL_ZERO_VERSION}.tar.gz" + echo "${LEVEL_ZERO_SHA256} v${LEVEL_ZERO_VERSION}.tar.gz" > "v${LEVEL_ZERO_VERSION}.tar.gz.sha256" + sha256sum -c "v${LEVEL_ZERO_VERSION}.tar.gz.sha256" + fi tar -xf "v${LEVEL_ZERO_VERSION}.tar.gz" cd "level-zero-${LEVEL_ZERO_VERSION}" echo "${LEVEL_ZERO_VERSION}" | awk -F. '{print $3}' > VERSION_PATCH @@ -56,7 +70,11 @@ function build_level_zero { cmake --build . --config Release --parallel "$(nproc)" cmake --build . --config Release --target install export LEVELZERO_INCLUDE_DIR="$L0_INSTALL_PATH/include" - export LEVELZERO_LIBRARY="$L0_INSTALL_PATH/lib/libze_loader.so" + if [[ $OSTYPE = msys ]]; then + export LEVELZERO_LIBRARY="$L0_INSTALL_PATH/lib/ze_loader.lib" + else + export LEVELZERO_LIBRARY="$L0_INSTALL_PATH/lib/libze_loader.so" + fi } function build_pti { diff --git a/scripts/pti_lib.py b/scripts/pti_lib.py index 75d70fe1b8..d93c965414 100644 --- a/scripts/pti_lib.py +++ b/scripts/pti_lib.py @@ -13,7 +13,7 @@ def get_pti_lib_path() -> pathlib.Path: """ files = importlib.metadata.files('intel-pti') or [] for f in files: - if f.name == 'libpti_view.so': + if f.name in ('libpti_view.so', 'pti_view.lib'): return pathlib.Path(f.locate()).parent.resolve() raise AssertionError('libpti_view.so not found')