From 7295a704707995be22a08d8657a76c21f48d1e92 Mon Sep 17 00:00:00 2001 From: ethanwee1 Date: Tue, 26 May 2026 20:51:22 +0000 Subject: [PATCH 1/5] [CI] Add HUD link to parity summary Write a direct HUD URL into the parity workflow summary using the report PR or commit SHA so CI results can be cross-checked without extra navigation. --- .github/workflows/parity.yml | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/.github/workflows/parity.yml b/.github/workflows/parity.yml index 5f88548712818..1bbfa2a4ec9f1 100644 --- a/.github/workflows/parity.yml +++ b/.github/workflows/parity.yml @@ -332,6 +332,29 @@ jobs: ARCH_ARGS+=("$ARCH") done + HUD_SHA="$SHA" + if [ -z "$HUD_SHA" ]; then + HUD_SHA=$(basename "$(find ../../artifacts/ -name '*.csv' | head -1)" | grep -oP '[0-9a-f]{40}' || true) + fi + HUD_URL="" + if [ -n "$PR_ID" ]; then + if [ -n "$HUD_SHA" ]; then + HUD_URL="https://hud.pytorch.org/pytorch/pytorch/pull/${PR_ID}?sha=${HUD_SHA}" + else + HUD_URL="https://hud.pytorch.org/pytorch/pytorch/pull/${PR_ID}" + fi + elif [ -n "$HUD_SHA" ]; then + HUD_URL="https://hud.pytorch.org/pytorch/pytorch/commit/${HUD_SHA}" + fi + if [ -n "$HUD_URL" ]; then + { + echo "### HUD" + echo "" + echo "[Open this run in HUD]($HUD_URL)" + echo "" + } >> "$GITHUB_STEP_SUMMARY" + fi + if [ ${#CSV_ARGS[@]} -eq 0 ]; then echo "::warning::No CSVs found for any architecture — some or all generate-parity jobs may have failed" echo "## ⚠ No CSVs produced" >> "$GITHUB_STEP_SUMMARY" @@ -345,9 +368,8 @@ jobs: if [ -n "$SHA" ]; then ARGS+=(--sha "$SHA") else - DETECTED_SHA=$(basename "$(find ../../artifacts/ -name '*.csv' | head -1)" | grep -oP '[0-9a-f]{40}' || true) - if [ -n "$DETECTED_SHA" ]; then - ARGS+=(--sha "$DETECTED_SHA") + if [ -n "$HUD_SHA" ]; then + ARGS+=(--sha "$HUD_SHA") fi fi if [ -n "$PR_ID" ]; then From 416ee28fc499c2817eeff00f729b6897580fc21a Mon Sep 17 00:00:00 2001 From: ethanwee1 Date: Tue, 26 May 2026 21:02:05 +0000 Subject: [PATCH 2/5] [CI] Prefer SHA for parity artifact downloads When both PR and SHA inputs are provided, use the SHA for artifact download while retaining the PR input for the HUD summary link. --- .github/workflows/parity.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/parity.yml b/.github/workflows/parity.yml index 1bbfa2a4ec9f1..29cefc6bad91e 100644 --- a/.github/workflows/parity.yml +++ b/.github/workflows/parity.yml @@ -143,8 +143,7 @@ jobs: if [ -n "${{ inputs.sha }}" ]; then ARGS="$ARGS --sha1 ${{ inputs.sha }}" - fi - if [ -n "${{ inputs.pr_id }}" ]; then + elif [ -n "${{ inputs.pr_id }}" ]; then ARGS="$ARGS --pr_id ${{ inputs.pr_id }}" fi if [ "${{ inputs.exclude_distributed }}" = "true" ]; then From 94310cc74c2e6360cfb98501ba6c5204ab1ffc9b Mon Sep 17 00:00:00 2001 From: ethanwee1 Date: Tue, 26 May 2026 21:24:00 +0000 Subject: [PATCH 3/5] [CI] Rename parity HUD summary link Use a concise HUD LINK label for the clickable HUD URL in the parity report summary. --- .github/workflows/parity.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/parity.yml b/.github/workflows/parity.yml index 29cefc6bad91e..227d39dbef8b5 100644 --- a/.github/workflows/parity.yml +++ b/.github/workflows/parity.yml @@ -349,7 +349,7 @@ jobs: { echo "### HUD" echo "" - echo "[Open this run in HUD]($HUD_URL)" + echo "[HUD LINK]($HUD_URL)" echo "" } >> "$GITHUB_STEP_SUMMARY" fi From f269120ea7119916ad09b47b71fcaca5549cc886 Mon Sep 17 00:00:00 2001 From: ethanwee1 Date: Tue, 26 May 2026 21:25:27 +0000 Subject: [PATCH 4/5] [CI] Include exact SHA in PR HUD link Infer the resolved commit SHA from downloaded parity artifacts so PR-only parity runs link to the exact HUD PR/SHA page. --- .github/workflows/parity.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/parity.yml b/.github/workflows/parity.yml index 227d39dbef8b5..8de58e0111493 100644 --- a/.github/workflows/parity.yml +++ b/.github/workflows/parity.yml @@ -333,14 +333,14 @@ jobs: HUD_SHA="$SHA" if [ -z "$HUD_SHA" ]; then - HUD_SHA=$(basename "$(find ../../artifacts/ -name '*.csv' | head -1)" | grep -oP '[0-9a-f]{40}' || true) + HUD_SHA=$(find ../../artifacts/ -name '*.csv' | grep -oE '[0-9a-f]{40}' | head -1 || true) fi HUD_URL="" if [ -n "$PR_ID" ]; then if [ -n "$HUD_SHA" ]; then HUD_URL="https://hud.pytorch.org/pytorch/pytorch/pull/${PR_ID}?sha=${HUD_SHA}" else - HUD_URL="https://hud.pytorch.org/pytorch/pytorch/pull/${PR_ID}" + echo "::warning::Unable to determine exact SHA for PR HUD link" fi elif [ -n "$HUD_SHA" ]; then HUD_URL="https://hud.pytorch.org/pytorch/pytorch/commit/${HUD_SHA}" From b80bb58f414b63186f9984824a98ca37b257c228 Mon Sep 17 00:00:00 2001 From: ethanwee1 Date: Tue, 26 May 2026 21:29:29 +0000 Subject: [PATCH 5/5] [CI] Preserve resolved SHA for PR HUD links Write the resolved parity SHA into the uploaded artifacts so summary jobs can build exact PR HUD links for PR-only runs. --- .github/workflows/parity.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/parity.yml b/.github/workflows/parity.yml index 8de58e0111493..a60f49a02fab0 100644 --- a/.github/workflows/parity.yml +++ b/.github/workflows/parity.yml @@ -187,6 +187,7 @@ jobs: echo "folder=$FOLDER" >> "$GITHUB_OUTPUT" SHA=$(echo "$FOLDER" | grep -oP '[0-9a-f]{40}') echo "sha=$SHA" >> "$GITHUB_OUTPUT" + printf '%s\n' "$SHA" > "$FOLDER/hud_sha.txt" DATE=$(TZ='America/Los_Angeles' date '+%Y%m%d') echo "date=$DATE" >> "$GITHUB_OUTPUT" mv download_${{ matrix.arch }}.log "$FOLDER/" 2>/dev/null || true @@ -260,6 +261,7 @@ jobs: run: | FOLDER=".automation_scripts/pytorch-unit-test-scripts/${{ steps.folder.outputs.folder }}" PATHS="${FOLDER}/*.csv + ${FOLDER}/hud_sha.txt ${FOLDER}/*.log ${FOLDER}/*.txt ${FOLDER}/inductor_periodic_rocm_dir/ @@ -332,6 +334,12 @@ jobs: done HUD_SHA="$SHA" + if [ -z "$HUD_SHA" ]; then + HUD_SHA_FILE=$(find ../../artifacts/ -name hud_sha.txt -print -quit) + if [ -n "$HUD_SHA_FILE" ]; then + HUD_SHA=$(cat "$HUD_SHA_FILE" | head -1) + fi + fi if [ -z "$HUD_SHA" ]; then HUD_SHA=$(find ../../artifacts/ -name '*.csv' | grep -oE '[0-9a-f]{40}' | head -1 || true) fi