Skip to content

Commit

Permalink
[ci] automate pull request on updating Translator commit id (#1715)
Browse files Browse the repository at this point in the history
Target to fix:
#1673

- Implementation is done.
- This PR creates PRs by a bot automatically, In order to trigger the
cid update in a regular base, at the end of the review, I will change
the trigger to
  ```yml
      workflow_dispatch:  # manually
      schedule:  # nightly
  ```

Here is an automate created PR:
#1742
  • Loading branch information
AshburnLee authored Aug 2, 2024
1 parent 00d1002 commit 50fb888
Show file tree
Hide file tree
Showing 3 changed files with 127 additions and 74 deletions.
121 changes: 121 additions & 0 deletions .github/workflows/auto-update-translator-cid.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@

name: Automate update Translator cid
on:
workflow_dispatch:
schedule:
- cron: '5 23 * * *'

env:
PR_BRANCH: bot/update_translator_cid

jobs:
update-config:
runs-on:
- glados
- spr
- runner-0.0.18
defaults:
run:
shell: bash -noprofile --norc -eo pipefail -c "source /home/runner/intel/oneapi/setvars.sh > /dev/null; source {0}"
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0

# search the opened PR that has branch "bot/update_translator_cid", no new PR as long as the target PR is open
- name: Search the opened PR that has branch ${{ env.PR_BRANCH }}
env:
GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }}
run: |
if gh pr list | grep "${PR_BRANCH}"; then
echo "Bot PR is still open"
echo "TARGET_PRID=$(gh pr list --search "head:${PR_BRANCH}" --json number --jq ".[].number")" >> $GITHUB_ENV
fi
# if $TARGET_PRID is null, target PR is meged or closed or never been raised. In that case search for the latest valid translator cid
- name: Load pip cache
if: ${{ env.TARGET_PRID == null }}
uses: ./.github/actions/load
env:
CACHE_NUMBER: 1
with:
path: $HOME/.cache/pip
key: pip-3.10-${{ hashFiles('python/pyproject.toml', 'python/setup.py') }}-${{ env.CACHE_NUMBER }}

- name: Install Python 3.10
if: ${{ env.TARGET_PRID == null }}
uses: actions/setup-python@v5
with:
python-version: '3.10'

- name: Setup PyTorch with IPEX
if: ${{ env.TARGET_PRID == null }}
uses: ./.github/actions/setup-pytorch
with:
repository: Stonepia/pytorch
ref: ""

- name: Setup IPEX
if: ${{ env.TARGET_PRID == null }}
uses: ./.github/actions/setup-ipex

- name: Install test dependencies
if: ${{ env.TARGET_PRID == null }}
run: |
pip install pytest pytest-xdist pytest-rerunfailures pytest-select pytest-timeout expecttest
pip install git+https://github.com/kwasd/[email protected]
- name: Get commit ID from Triton's spirv-llvm-translator.conf
if: ${{ env.TARGET_PRID == null }}
run: echo "CID_CURRENT=$(cat ./lib/Target/SPIRV/spirv-llvm-translator.conf)" >> $GITHUB_ENV

- name: Checkout SPIRV-LLVM-Translator
if: ${{ env.TARGET_PRID == null }}
uses: actions/checkout@v4
with:
repository: KhronosGroup/SPIRV-LLVM-Translator
ref: main
fetch-depth: 0
path: external/SPIRV-LLVM-Translator

- name: Get the latest commit ID from SPIRV-LLVM-Translator
if: ${{ env.TARGET_PRID == null }}
run: |
echo "CID_LATEST=$(git -C external/SPIRV-LLVM-Translator rev-parse HEAD)" >> $GITHUB_ENV
# the latest valid cid has been weitten to spirv-llvm-translator.conf
- name: Search the latest valid Translator cid
if: ${{ env.TARGET_PRID == null }}
run: |
env
./scripts/check_update_tranlator_cid.sh $CID_LATEST $CID_CURRENT
if git status --porcelain ./lib/Target/SPIRV/spirv-llvm-translator.conf | grep '^ M'; then
echo "MODIFIED=true" >> $GITHUB_ENV
echo "spirv-llvm-translator.conf has been modified"
fi
# raise PR by bot
- name: Create PR if config is updated
if: ${{ env.TARGET_PRID == null && env.MODIFIED == 'true' }}
env:
GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }}
run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
if git show-ref --verify --quiet "refs/remotes/origin/${PR_BRANCH}"; then
echo "${PR_BRANCH} already exist, deleting..."
git push origin --delete "${PR_BRANCH}"
else
echo "${PR_BRANCH} not exist"
fi
git checkout llvm-target # make sure checkout a new branch that is based on llvm-target
git checkout -b ${PR_BRANCH}
git branch --show-current # bot/update_translator_cid
git status
git add ./lib/Target/SPIRV/spirv-llvm-translator.conf
git commit -m "Update spirv-llvm-translator.conf"
git push origin ${PR_BRANCH}
pr_url=$(gh pr create --title "[github-bot] Update spirv-llvm-translator.conf" --body "Automated PR to update translator commit id." --reviewer whitneywhtsang --head ${PR_BRANCH} --base llvm-target)
74 changes: 0 additions & 74 deletions .github/workflows/update-spirv-llvm-translator.yml

This file was deleted.

6 changes: 6 additions & 0 deletions scripts/check_update_tranlator_cid.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ COMMIT_IDS=$(git -C $TRITON_PROJ/external/SPIRV-LLVM-Translator log --format="%H

# check every commit ids
cd $TRITON_PROJ
FOUND=false
for cid in $COMMIT_IDS; do
echo "$cid" > ./lib/Target/SPIRV/spirv-llvm-translator.conf
if ! ./scripts/compile-triton.sh --clean; then
Expand All @@ -34,8 +35,13 @@ for cid in $COMMIT_IDS; do
if ./scripts/test-triton.sh --skip-deps; then
echo "Tests passed for translator commit $cid"
echo "A newer commit found: $cid"
FOUND=true
break
else
echo "Tests failed for translator commit $cid"
fi
done

if [ "$FOUND" = false ]; then
git restore ./lib/Target/SPIRV/spirv-llvm-translator.conf
fi

0 comments on commit 50fb888

Please sign in to comment.