From 4462554c09e985f5e9939f6cecf459b283999e7e Mon Sep 17 00:00:00 2001 From: Pavel Chekin Date: Fri, 22 Nov 2024 11:45:54 -0800 Subject: [PATCH 01/10] Workflow to test Triton with pip dependencies --- .github/workflows/pip-test.yml | 56 ++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 .github/workflows/pip-test.yml diff --git a/.github/workflows/pip-test.yml b/.github/workflows/pip-test.yml new file mode 100644 index 0000000000..b102adb9c8 --- /dev/null +++ b/.github/workflows/pip-test.yml @@ -0,0 +1,56 @@ +name: Test with pip + +on: + workflow_dispatch: + + # FIXME: update before merging + pull_request: + branches: + - main + push: + branches: + - main + +permissions: read-all + +env: + PYTHON_VERSION: '3.9' + TRITON_TEST_CMD: "scripts/test-triton.sh --skip-pytorch-install" + +jobs: + tests: + name: Tests + runs-on: + - rolling + - runner-0.0.20 + steps: + - name: Install Python + uses: actions/setup-python@v5 + with: + python-version: ${{ env.PYTHON_VERSION }} + + - name: Install wheels + uses: ./.github/actions/install-wheels + with: + gh_token: ${{ secrets.GITHUB_TOKEN }} + python_version: ${{ env.PYTHON_VERSION }} + + - name: Install Triton runtime dependencies + run: | + pip install intel-sycl-rt intel-pti + + - name: Run core tests + run: | + ${{ env.TRITON_TEST_CMD }} --core + + - name: Run interpreter tests + run: | + ${{ env.TRITON_TEST_CMD }} --interpreter --skip-pip-install + + - name: Run Tutorials + run: | + ${{ env.TRITON_TEST_CMD }} --tutorial --skip-pip-install + + - name: Run inductor test + run: | + ${{ env.TRITON_TEST_CMD }} --inductor --skip-pip-install From 8ae6486725b060c2d429cd9b7bf5852862ce34da Mon Sep 17 00:00:00 2001 From: Pavel Chekin Date: Fri, 22 Nov 2024 11:47:59 -0800 Subject: [PATCH 02/10] Check out repository --- .github/workflows/pip-test.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/pip-test.yml b/.github/workflows/pip-test.yml index b102adb9c8..d24e10b268 100644 --- a/.github/workflows/pip-test.yml +++ b/.github/workflows/pip-test.yml @@ -24,6 +24,9 @@ jobs: - rolling - runner-0.0.20 steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Install Python uses: actions/setup-python@v5 with: From d6e9cbae43b703d1f5c819c4fd3e345b158bfc42 Mon Sep 17 00:00:00 2001 From: Pavel Chekin Date: Fri, 22 Nov 2024 11:53:16 -0800 Subject: [PATCH 03/10] TMP: sleep inf to troubleshoot --- .github/workflows/pip-test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pip-test.yml b/.github/workflows/pip-test.yml index d24e10b268..39f48b2d37 100644 --- a/.github/workflows/pip-test.yml +++ b/.github/workflows/pip-test.yml @@ -41,6 +41,7 @@ jobs: - name: Install Triton runtime dependencies run: | pip install intel-sycl-rt intel-pti + sleep inf - name: Run core tests run: | From e1a06a4c20ba048791b7a7d418362e7ad58cfa28 Mon Sep 17 00:00:00 2001 From: Pavel Chekin Date: Fri, 22 Nov 2024 13:30:42 -0800 Subject: [PATCH 04/10] Set LD_LIBRARY_PATH --- .github/workflows/pip-test.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pip-test.yml b/.github/workflows/pip-test.yml index 39f48b2d37..3be1c07600 100644 --- a/.github/workflows/pip-test.yml +++ b/.github/workflows/pip-test.yml @@ -41,7 +41,11 @@ jobs: - name: Install Triton runtime dependencies run: | pip install intel-sycl-rt intel-pti - sleep inf + + - name: Set LD_LIBRARY_PATH + run: | + sycl_rt_lib="$(python scripts/sycl_rt_lib.py)" + echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$sycl_rt_lib" | tee -a $GITHUB_ENV - name: Run core tests run: | From d1dec21d1fa0e0671c773ae36588c3fd32e9b76f Mon Sep 17 00:00:00 2001 From: Pavel Chekin Date: Fri, 22 Nov 2024 13:31:31 -0800 Subject: [PATCH 05/10] Script that prints sycl_rt library path. --- scripts/sycl_rt_lib.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 scripts/sycl_rt_lib.py diff --git a/scripts/sycl_rt_lib.py b/scripts/sycl_rt_lib.py new file mode 100644 index 0000000000..cff3f956a2 --- /dev/null +++ b/scripts/sycl_rt_lib.py @@ -0,0 +1,21 @@ +"""Prints a lib directory for intel-sycl-rt.""" + +import importlib.metadata +import pathlib + + +def get_sycl_rt_lib_path() -> pathlib.Path: + """Returns library path for intel-sycl-rt. + + Raises: + importlib.metadata.PackageNotFoundError: if intel-sycl-rt not installed. + AssertionError: if libsycl.so not found. + """ + for f in importlib.metadata.files('intel-sycl-rt'): + if f.name == 'libsycl.so': + return pathlib.Path(f.locate()).parent.resolve() + raise AssertionError('libsycl.so not found') + + +if __name__ == '__main__': + print(get_sycl_rt_lib_path()) From 861e35898939bf73b4c327c955240742a8d4bded Mon Sep 17 00:00:00 2001 From: Pavel Chekin Date: Fri, 22 Nov 2024 13:39:16 -0800 Subject: [PATCH 06/10] Do not set LD_LIBRARY_PATH since runner already has it --- .github/workflows/pip-test.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/pip-test.yml b/.github/workflows/pip-test.yml index 3be1c07600..d24e10b268 100644 --- a/.github/workflows/pip-test.yml +++ b/.github/workflows/pip-test.yml @@ -42,11 +42,6 @@ jobs: run: | pip install intel-sycl-rt intel-pti - - name: Set LD_LIBRARY_PATH - run: | - sycl_rt_lib="$(python scripts/sycl_rt_lib.py)" - echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$sycl_rt_lib" | tee -a $GITHUB_ENV - - name: Run core tests run: | ${{ env.TRITON_TEST_CMD }} --core From b71262b40fb178839ea43e167e0b3dc2bf81deba Mon Sep 17 00:00:00 2001 From: Pavel Chekin Date: Fri, 22 Nov 2024 15:06:20 -0800 Subject: [PATCH 07/10] Fix mypi issue --- scripts/sycl_rt_lib.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/sycl_rt_lib.py b/scripts/sycl_rt_lib.py index cff3f956a2..416fd4ceeb 100644 --- a/scripts/sycl_rt_lib.py +++ b/scripts/sycl_rt_lib.py @@ -11,7 +11,8 @@ def get_sycl_rt_lib_path() -> pathlib.Path: importlib.metadata.PackageNotFoundError: if intel-sycl-rt not installed. AssertionError: if libsycl.so not found. """ - for f in importlib.metadata.files('intel-sycl-rt'): + files = importlib.metadata.files('intel-sycl-rt') or [] + for f in files: if f.name == 'libsycl.so': return pathlib.Path(f.locate()).parent.resolve() raise AssertionError('libsycl.so not found') From 4dd35c20bdcb8f03753f3068699b511913ebe69f Mon Sep 17 00:00:00 2001 From: Pavel Chekin Date: Fri, 22 Nov 2024 15:09:14 -0800 Subject: [PATCH 08/10] Build Triton from sources --- .github/workflows/pip-test.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/pip-test.yml b/.github/workflows/pip-test.yml index d24e10b268..fcddf040b1 100644 --- a/.github/workflows/pip-test.yml +++ b/.github/workflows/pip-test.yml @@ -37,6 +37,11 @@ jobs: with: gh_token: ${{ secrets.GITHUB_TOKEN }} python_version: ${{ env.PYTHON_VERSION }} + # transformers package is required for the inductor (e2e) test + wheels_pattern: '{torch,transformers}-*.whl' + + - name: Setup Triton + uses: ./.github/actions/setup-triton - name: Install Triton runtime dependencies run: | From d36c4dc6decb3be309992cbead9b99a55575b8ad Mon Sep 17 00:00:00 2001 From: Pavel Chekin Date: Fri, 22 Nov 2024 15:42:55 -0800 Subject: [PATCH 09/10] Run workflow only on changes to the driver --- .github/workflows/pip-test.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pip-test.yml b/.github/workflows/pip-test.yml index fcddf040b1..6e93a0dd38 100644 --- a/.github/workflows/pip-test.yml +++ b/.github/workflows/pip-test.yml @@ -3,13 +3,16 @@ name: Test with pip on: workflow_dispatch: - # FIXME: update before merging pull_request: branches: - main + paths: + - third_party/intel/backend/driver.py push: branches: - main + paths: + - third_party/intel/backend/driver.py permissions: read-all From fb005e4e504647bcf42a6639ba82a3733badf4cf Mon Sep 17 00:00:00 2001 From: Pavel Chekin Date: Fri, 22 Nov 2024 15:50:05 -0800 Subject: [PATCH 10/10] Run for new nightly wheels --- .github/workflows/pip-test.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/pip-test.yml b/.github/workflows/pip-test.yml index 6e93a0dd38..79ccdf892c 100644 --- a/.github/workflows/pip-test.yml +++ b/.github/workflows/pip-test.yml @@ -3,6 +3,7 @@ name: Test with pip on: workflow_dispatch: + # run workflow on changes to the driver, which handles the libraries logic pull_request: branches: - main @@ -14,6 +15,13 @@ on: paths: - third_party/intel/backend/driver.py + # run workflow after building nightly wheels + workflow_run: + workflows: + - nightly-wheels.yml + types: + - completed + permissions: read-all env: @@ -23,6 +31,7 @@ env: jobs: tests: name: Tests + if: ${{ github.event_name != 'workflow_run' || github.event.workflow_run.conclusion == 'success' }} runs-on: - rolling - runner-0.0.20