-
Notifications
You must be signed in to change notification settings - Fork 791
[CI][UR] Bring up UR benchmarking results dashboard in intel.github.io #17475
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 60 commits
e6ca992
3d42db2
fc70520
4f08dd6
497dcce
3cbed5e
1936207
f79bbbf
ffc8139
0a34e0d
3f42420
1c7b189
ad13e93
68ed0c4
18fff93
3a65b98
220121a
37d361c
07f1e10
64cf79c
6c28d33
e15b94f
78fd037
0ed1599
82b6e55
162cba0
848f741
918604e
72d8730
066f5a6
18e5291
237750e
ba1297f
cd6097f
c4e92c6
ed8eecc
130212d
a884df8
5323386
5bd1d56
e9b1375
a3edf7a
6620e4a
f4a2e39
5d3b0d9
38394bb
f232b93
30cd308
5e0539a
137407a
e0f5ca6
1041db6
fae04f4
b698e9e
21a0599
cfa4a9c
12c67cc
c4c4a16
46aaf82
6b97436
c58407b
a3f2b4d
e3e7ec5
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,128 @@ | ||
name: Run Benchmarks | ||
|
||
on: | ||
schedule: | ||
- cron: '0 1 * * *' # 2 hrs earlier than sycl-nightly.yml | ||
workflow_call: | ||
inputs: | ||
commit_hash: | ||
type: string | ||
required: false | ||
upload_results: | ||
type: string # true/false: workflow_dispatch does not support booleans | ||
required: true | ||
runner: | ||
type: string | ||
required: true | ||
backend: | ||
type: string | ||
required: true | ||
reset_intel_gpu: | ||
type: string # true/false: workflow_dispatch does not support booleans | ||
required: true | ||
default: true | ||
|
||
workflow_dispatch: | ||
inputs: | ||
commit_hash: | ||
description: Commit hash to build intel/llvm from | ||
type: string | ||
required: false | ||
default: '' | ||
upload_results: | ||
description: 'Save and upload results' | ||
type: choice | ||
options: | ||
- false | ||
- true | ||
default: true | ||
runner: | ||
type: choice | ||
options: | ||
- '["PVC_PERF"]' | ||
backend: | ||
description: Backend to use | ||
type: choice | ||
options: | ||
- 'level_zero:gpu' | ||
# TODO L0 V2 support | ||
reset_intel_gpu: | ||
description: Reset Intel GPUs | ||
type: choice | ||
options: | ||
- false | ||
- true | ||
default: true | ||
|
||
permissions: read-all | ||
|
||
jobs: | ||
build_sycl: | ||
name: Build SYCL from PR | ||
if: inputs.commit_hash != '' | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. techincally passing empty // FYI, trigger type can be used to establish if nightly or not There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Good catch! think I resolved this via the latest commit: I've set default values on commit_hash to always be a string // trigger type can be used to determine if a job was scheduled, but I've chosen to use commit_hash here incase the user themselves wants to use the nightly build of sycl manually There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. hmm tbh, I'm not sure if setting There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. maybe I'm missing something, but can we easily read the hash commit from PR? I know we used There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The sycl-linux-build.yml job in intel/llvm doesn't support compiling commits from other branches, thus we cannot access commits from PR branches as of now: I have chosen to not stir the nest here, but this will probably be a future change that involes changing sycl-linux-build.yml There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. hmm... so what should I pass here to check my PR? or is it intended as a post-merge check? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Admittedly I dont think that'd be possible right now 😅 We will figure something out though, given that this PR is no longer urgent, I'll make a PR to change sycl-linux-build.yml so that we can actually accomplish this |
||
uses: ./.github/workflows/sycl-linux-build.yml | ||
with: | ||
build_ref: ${{ inputs.commit_hash }} | ||
build_cache_root: "/__w/" | ||
build_artifact_suffix: "default" | ||
build_cache_suffix: "default" | ||
# Docker image has last nightly pre-installed and added to the PATH | ||
build_image: "ghcr.io/intel/llvm/sycl_ubuntu2404_nightly:latest" | ||
cc: clang | ||
cxx: clang++ | ||
changes: '[]' | ||
|
||
run_benchmarks_build: | ||
name: Run Benchmarks (on PR Build) | ||
needs: [ build_sycl ] | ||
if: inputs.commit_hash != '' | ||
strategy: | ||
matrix: | ||
# Set default values if not specified: | ||
include: | ||
- runner: ${{ inputs.runner || '["PVC_PERF"]' }} | ||
backend: ${{ inputs.backend || 'level_zero:gpu' }} | ||
reset_intel_gpu: ${{ inputs.reset_intel_gpu || 'true' }} | ||
ref: ${{ inputs.commit_hash }} | ||
uses: ./.github/workflows/sycl-linux-run-tests.yml | ||
secrets: inherit | ||
with: | ||
# TODO support other benchmarks | ||
name: Run compute-benchmarks (${{ matrix.runner }}, ${{ matrix.backend }}) | ||
runner: ${{ matrix.runner }} | ||
image: ghcr.io/intel/llvm/sycl_ubuntu2404_nightly:latest | ||
image_options: -u 1001 --device=/dev/dri -v /dev/dri/by-path:/dev/dri/by-path --privileged --cap-add SYS_ADMIN | ||
target_devices: ${{ matrix.backend }} | ||
reset_intel_gpu: ${{ matrix.reset_intel_gpu }} | ||
tests_selector: benchmark_v2 | ||
benchmark_upload_results: ${{ inputs.upload_results }} | ||
benchmark_build_hash: ${{ inputs.commit_hash }} | ||
repo_ref: ${{ matrix.ref }} | ||
devops_ref: ${{ github.ref }} | ||
sycl_toolchain_artifact: sycl_linux_default | ||
sycl_toolchain_archive: ${{ needs.build_sycl.outputs.artifact_archive_name }} | ||
sycl_toolchain_decompress_command: ${{ needs.build_sycl.outputs.artifact_decompress_command }} | ||
|
||
run_benchmarks_nightly: | ||
name: Run Benchmarks (on Nightly Build) | ||
if: inputs.commit_hash == '' | ||
strategy: | ||
matrix: | ||
# Set default values if not specified: | ||
include: | ||
- runner: ${{ inputs.runner || '["PVC_PERF"]' }} | ||
backend: ${{ inputs.backend || 'level_zero:gpu' }} | ||
reset_intel_gpu: ${{ inputs.reset_intel_gpu || 'true' }} | ||
uses: ./.github/workflows/sycl-linux-run-tests.yml | ||
secrets: inherit | ||
with: | ||
# TODO support other benchmarks | ||
name: Run compute-benchmarks (${{ matrix.runner }}, ${{ matrix.backend }}) | ||
runner: ${{ matrix.runner }} | ||
image: ghcr.io/intel/llvm/sycl_ubuntu2404_nightly:latest | ||
image_options: -u 1001 --device=/dev/dri -v /dev/dri/by-path:/dev/dri/by-path --privileged --cap-add SYS_ADMIN | ||
target_devices: ${{ matrix.backend }} | ||
reset_intel_gpu: ${{ matrix.reset_intel_gpu }} | ||
tests_selector: benchmark_v2 | ||
benchmark_upload_results: ${{ inputs.upload_results }} | ||
repo_ref: ${{ github.ref }} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,52 +1,47 @@ | ||
name: Aggregate compute-benchmark averages from historical data | ||
|
||
# The benchmarking workflow in sycl-linux-run-tests.yml passes or fails based on | ||
# how the benchmark results compare to a historical average: This historical | ||
# average is calculated in this workflow, which aggregates historical data and | ||
# produces measures of central tendency (median in this case) used for this | ||
# purpose. | ||
name: Test benchmark.yml using sycl-benchmark-aggregate | ||
|
||
on: | ||
workflow_dispatch: | ||
inputs: | ||
lookback_days: | ||
description: | | ||
Number of days from today to look back in historical results for: | ||
This sets the age limit of data used in average calculation: Any | ||
benchmark results created before `lookback_days` from today is | ||
excluded from being aggregated in the historical average. | ||
type: number | ||
required: true | ||
workflow_call: | ||
inputs: | ||
lookback_days: | ||
type: number | ||
required: true | ||
secrets: | ||
LLVM_SYCL_BENCHMARK_TOKEN: | ||
description: | | ||
Github token used by the faceless account to push newly calculated | ||
medians. | ||
required: true | ||
|
||
commit_hash: | ||
description: Specific commit hash to build SYCL from | ||
type: string | ||
required: false | ||
upload_results: | ||
description: 'Save and upload results' | ||
type: choice | ||
options: | ||
- false | ||
- true | ||
default: true | ||
runner: | ||
type: choice | ||
options: | ||
- '["PVC_PERF"]' | ||
backend: | ||
description: Backend to use | ||
type: choice | ||
options: | ||
- 'level_zero:gpu' | ||
# TODO L0 V2 support | ||
reset_intel_gpu: | ||
description: Reset Intel GPUs | ||
type: choice | ||
options: | ||
- false | ||
- true | ||
default: true | ||
|
||
permissions: | ||
contents: read | ||
permissions: read-all | ||
|
||
jobs: | ||
aggregate: | ||
name: Aggregate average (median) value for all metrics | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
sparse-checkout: | | ||
devops/scripts/benchmarking | ||
devops/benchmarking | ||
devops/actions/benchmarking | ||
- name: Aggregate benchmark results and produce historical average | ||
uses: ./devops/actions/benchmarking/aggregate | ||
with: | ||
lookback_days: ${{ inputs.lookback_days }} | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.LLVM_SYCL_BENCHMARK_TOKEN }} | ||
name: Test benchmark.yml | ||
uses: ./.github/workflows/benchmark.yml | ||
secrets: inherit | ||
with: | ||
commit_hash: ${{ inputs.commit_hash }} | ||
upload_results: ${{ inputs.upload_results }} | ||
runner: ${{ inputs.runner }} | ||
backend: ${{ inputs.backend }} | ||
reset_intel_gpu: ${{ inputs.reset_intel_gpu }} | ||
kswiecicki marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
Uh oh!
There was an error while loading. Please reload this page.