Skip to content

Commit 832a7ec

Browse files
committed
Merge remote-tracking branch 'upstream/sycl' into cpu-count-benches
2 parents 08a5914 + cb30cbc commit 832a7ec

File tree

178 files changed

+2594
-404
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

178 files changed

+2594
-404
lines changed

.github/workflows/sycl-benchmark-aggregate.yml

Lines changed: 0 additions & 52 deletions
This file was deleted.

.github/workflows/sycl-check-ready-to-merge-prs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ permissions: read-all
1414

1515
jobs:
1616
notify-ready-prs:
17+
if: github.repository == 'intel/llvm'
1718
permissions:
1819
pull-requests: write
1920
runs-on: ubuntu-latest

.github/workflows/sycl-ur-perf-benchmarking.yml

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ on:
1515
PR no. to build SYCL from if specified: SYCL will be built from HEAD
1616
of incoming branch used by the specified PR no.
1717
18-
If both pr_no and commit_hash are empty, the latest SYCL nightly build
19-
will be used.
18+
If both pr_no and commit_hash are empty, the latest commit in
19+
deployment branch will be used.
2020
required: false
2121
default: ''
2222
commit_hash:
@@ -64,33 +64,34 @@ on:
6464
pr_no:
6565
type: string
6666
description: |
67-
PR no. to build SYCL from:
68-
69-
SYCL will be built from HEAD of incoming branch.
67+
PR no. to build SYCL from - it will be built from HEAD of incoming branch.
68+
69+
Leave both pr_no and commit_hash empty to use the latest commit from branch/tag this workflow started from.
7070
required: false
7171
default: ''
7272
commit_hash:
7373
type: string
7474
description: |
75-
Commit hash (within intel/llvm) to build SYCL from:
75+
Commit hash (within intel/llvm) to build SYCL from.
7676
77-
Leave both pr_no and commit_hash empty to use latest commit.
77+
Leave both pr_no and commit_hash empty to use the latest commit from branch/tag this workflow started from.
7878
required: false
7979
default: ''
8080
save_name:
8181
type: string
8282
description: |
83-
Name to use for the benchmark result:
83+
Name to use for the benchmark result
8484
required: false
8585
default: ''
8686
upload_results:
87-
description: 'Save and upload results (to https://intel.github.io/llvm/benchmarks)'
87+
description: Save and upload results (to https://intel.github.io/llvm/benchmarks)
8888
type: choice
8989
options:
9090
- false
9191
- true
9292
default: true
9393
runner:
94+
description: Self-hosted runner to use for the benchmarks
9495
type: choice
9596
options:
9697
- '["PVC_PERF"]'

devops/dependencies-igc-dev.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{
22
"linux": {
33
"igc_dev": {
4-
"github_tag": "igc-dev-73b524f",
5-
"version": "73b524f",
6-
"updated_at": "2025-10-08T14:41:18Z",
7-
"url": "https://api.github.com/repos/intel/intel-graphics-compiler/actions/artifacts/4216125306/zip",
4+
"github_tag": "igc-dev-e31e178",
5+
"version": "e31e178",
6+
"updated_at": "2025-10-15T23:43:09Z",
7+
"url": "https://api.github.com/repos/intel/intel-graphics-compiler/actions/artifacts/4282933233/zip",
88
"root": "{DEPS_ROOT}/opencl/runtime/linux/oclgpu"
99
}
1010
}

devops/scripts/benchmarks/CONTRIB.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## Architecture
44

5-
The suite is structured around three main components: Suites, Benchmarks, and Results.
5+
The suite is structured around four main components: Suites, Benchmarks, Results, and BenchmarkMetadata.
66

77
1. **Suites:**
88
* Collections of related benchmarks (e.g., `ComputeBench`, `LlamaCppBench`).
@@ -170,7 +170,7 @@ The benchmark suite generates an interactive HTML dashboard that visualizes `Res
170170
* If adding to an existing category, modify the corresponding `Suite` class (e.g., `benches/compute.py`) to instantiate and return your new benchmark in its `benchmarks()` method.
171171
* If creating a new category, create a new `Suite` class inheriting from `benches.base.Suite`. Implement `name()` and `benchmarks()`. Add necessary `setup()` if the suite requires shared setup. Add group metadata via `additional_metadata()` if needed.
172172
3. **Register Suite:** Import and add your new `Suite` instance to the `suites` list in `main.py`.
173-
4. **Add to Presets:** If adding a new suite, add its `name()` to the relevant lists in `presets.py` (e.g., "Full", "Normal") so it runs with those presets.
173+
4. **Add to Presets:** If adding a new suite, add its `name()` to the relevant lists in `presets.py` (e.g., "Full", "Normal") so it runs with those presets. Update `README.md` to include the new suite in presets' description.
174174

175175
## Recommendations
176176

devops/scripts/benchmarks/README.md

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# Unified Runtime Benchmark Runner
1+
# SYCL and Unified Runtime Benchmark Runner
22

3-
Scripts for running performance tests on SYCL and Unified Runtime.
3+
Scripts for running benchmarks on SYCL and Unified Runtime.
44

55
## Benchmarks
66

@@ -31,19 +31,21 @@ $ pip install -r requirements.txt
3131
$ ./main.py ~/benchmarks_workdir/ --sycl ~/llvm/build/ --ur ~/ur_install --adapter adapter_name
3232
```
3333

34-
This last command will **download and build** everything in `~/benchmarks_workdir/`
35-
using the built compiler located in `~/llvm/build/`,
36-
UR **install directory** from `~/ur`,
34+
This last command will **download and build** everything in `~/benchmarks_workdir/`
35+
using the built compiler located in `~/llvm/build/` and
36+
installed Unified Runtime in directory `~/ur_install`,
3737
and then **run** the benchmarks for `adapter_name` adapter.
3838

3939
>NOTE: By default `level_zero` adapter is used.
4040
4141
>NOTE: Pay attention to the `--ur` parameter. It points directly to the directory where UR is installed.
4242
To install Unified Runtime in the predefined location, use the `-DCMAKE_INSTALL_PREFIX`.
4343

44-
UR build example:
44+
UR build and install example:
4545
```
4646
$ cmake -DCMAKE_BUILD_TYPE=Release -S~/llvm/unified-runtime -B~/ur_build -DCMAKE_INSTALL_PREFIX=~/ur_install -DUR_BUILD_ADAPTER_L0=ON -DUR_BUILD_ADAPTER_L0_V2=ON
47+
$ cmake --build ~/ur_build -j $(nproc)
48+
$ cmake --install ~/ur_build
4749
```
4850

4951
### Rebuild
@@ -95,11 +97,12 @@ In addition to the above parameters, there are also additional options that help
9597
`--preset <option>` - limits the types of benchmarks that are run.
9698

9799
The available benchmarks options are:
98-
* `Full` (Compute, Gromacs, llama, SYCL, Velocity and UMF benchmarks)
100+
* `Full` (BenchDNN, Compute, Gromacs, llama, SYCL, Velocity and UMF benchmarks)
99101
* `SYCL` (Compute, llama, SYCL, Velocity)
100102
* `Minimal` (Compute)
101-
* `Normal` (Compute, Gromacs, llama, Velocity)
103+
* `Normal` (BenchDNN, Compute, Gromacs, llama, Velocity)
102104
* `Gromacs` (Gromacs)
105+
* `OneDNN` (BenchDNN)
103106
* `Test` (Test Suite)
104107

105108
`--filter <regex>` - allows to set the regex pattern to filter benchmarks by name.
@@ -108,18 +111,17 @@ For example `--filter "graph_api_*"`
108111

109112
## Running in CI
110113

111-
The benchmarks scripts are used in a GitHub Actions worflow, and can be automatically executed on a preconfigured system against any Pull Request.
114+
The benchmarks scripts are used in a GitHub Actions workflow, and can be automatically executed on a preconfigured system against any Pull Request.
112115

113116
![compute benchmarks](workflow.png "Compute Benchmarks CI job")
114117

115-
To execute the benchmarks in CI, navigate to the `Actions` tab and then go to the `Compute Benchmarks` action. Here, you will find a list of previous runs and a "Run workflow" button. Upon clicking the button, you will be prompted to fill in a form to customize your benchmark run. The only mandatory field is the `PR number`, which is the identifier for the Pull Request against which you want the benchmarks to run.
118+
To execute the benchmarks in CI, navigate to the `Actions` tab and then go to the `Run Benchmarks` workflow. Here, you will find a list of previous runs and a "Run workflow" button. Upon clicking the button, you will be prompted to fill in a form to customize your benchmark run. Important field is the `PR number`, which is the identifier for the Pull Request against which you want the benchmarks to run. Instead, you can specify `Commit hash` from within intel/llvm repository, or leave both empty to run benchmarks against the branch/tag the workflow started from (the value from dropdown list at the top).
116119

117-
You can also include additional benchmark parameters, such as environment variables or filters. For a complete list of options, refer to `$ ./main.py --help`.
118-
119-
Once all the required information is entered, click the "Run workflow" button to initiate a new workflow run. This will execute the benchmarks and then post the results as a comment on the specified Pull Request.
120+
Once all the information is entered, click the "Run workflow" button to initiate a new workflow run. This will execute the benchmarks and then post the results as a comment on the specified Pull Request.
120121

121122
>NOTE: You must be a member of the `oneapi-src` organization to access these features.
122123
124+
## Requirements
123125
### System
124126

125127
Sobel Filter benchmark:

devops/scripts/benchmarks/benches/compute.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ def benchmark_bin(self) -> Path:
330330
return self.bench.project.build_dir / "bin" / self.bench_name
331331

332332
def cpu_count_str(self, separator: str = "") -> str:
333-
# Note: SYCL CI currently parses for on this "CPU count" value.
333+
# Note: SYCL CI currently relies on this "CPU count" value.
334334
# Please update /devops/scripts/benchmarks/compare.py if this value
335335
# is changed. See compare.py usage (w.r.t. --regression-filter) in
336336
# /devops/actions/run-tests/benchmarks/action.yml.

devops/scripts/benchmarks/compare.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ def to_hist(
321321
"--compare-file",
322322
type=str,
323323
required=True,
324-
help="Result file to compare against te historic average",
324+
help="Result file to compare against the historic average",
325325
)
326326
parser_avg.add_argument(
327327
"--results-dir", type=str, required=True, help="Directory storing results"

devops/scripts/benchmarks/main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,7 @@ def validate_and_parse_env_args(env_args):
507507
parser.add_argument(
508508
"--compare-max",
509509
type=int,
510-
help="How many results to read for comparisions",
510+
help="How many results to read for comparisons",
511511
default=options.compare_max,
512512
)
513513
parser.add_argument(

devops/scripts/benchmarks/options.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
# Copyright (C) 2025 Intel Corporation
2+
# Part of the Unified-Runtime Project, under the Apache License v2.0 with LLVM Exceptions.
3+
# See LICENSE.TXT
4+
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
5+
16
from dataclasses import dataclass, field
27
from enum import Enum
38
import multiprocessing

0 commit comments

Comments
 (0)