-
Notifications
You must be signed in to change notification settings - Fork 770
[Benchmarks] Update benchmarks README.md #18954
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
base: sycl
Are you sure you want to change the base?
Changes from all commits
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 |
---|---|---|
|
@@ -9,47 +9,68 @@ Scripts for running performance tests on SYCL and Unified Runtime. | |
- [LlamaCpp Benchmarks](https://github.com/ggerganov/llama.cpp) | ||
- [SYCL-Bench](https://github.com/unisa-hpc/sycl-bench) | ||
|
||
## Running | ||
## Requirements | ||
|
||
`$ ./main.py ~/benchmarks_workdir/ --sycl ~/llvm/build/ --ur ~/ur --adapter adapter_name` | ||
Built compiler to be used for benchmarks. | ||
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. These could be in bullets |
||
Instructions on where to find releases or how to build from sources can be found [here](https://github.com/intel/llvm). | ||
|
||
This will download and build everything in `~/benchmarks_workdir/` using the compiler in `~/llvm/build/`, UR source from `~/ur` and then run the benchmarks for `adapter_name` adapter. The results will be stored in `benchmark_results.md`. | ||
[Unified Runtime](https://github.com/intel/llvm/tree/sycl/unified-runtime) installed. | ||
Path to the UR install directory will be required in case of using UR for benchmarking. | ||
|
||
The scripts will try to reuse the files stored in `~/benchmarks_workdir/`, but the benchmarks will be rebuilt every time. To avoid that, use `--no-rebuild` option. | ||
`Python3` is required to install and run benchmarks. | ||
|
||
## Running in CI | ||
## Building & Running | ||
|
||
The benchmarks scripts are used in a GitHub Actions worflow, and can be automatically executed on a preconfigured system against any Pull Request. | ||
```bash | ||
$ git clone https://github.com/intel/llvm.git | ||
$ cd llvm/devops/scripts/benchmarks/ | ||
$ pip install -r requirements.txt | ||
|
||
 | ||
$ ./main.py ~/benchmarks_workdir/ --sycl ~/llvm/build/ --ur ~/ur --adapter adapter_name | ||
``` | ||
|
||
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. | ||
This last command will **download and build** everything in `~/benchmarks_workdir/` | ||
using the built compiler located in `~/llvm/build/`, | ||
UR install directory from `~/ur`, | ||
and then **run** the benchmarks for `adapter_name` adapter. | ||
|
||
You can also include additional benchmark parameters, such as environment variables or filters. For a complete list of options, refer to `$ ./main.py --help`. | ||
>NOTE: By default `level_zero` adapter is used. | ||
|
||
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. | ||
### Rebuild | ||
The scripts will try to reuse the files stored in `~/benchmarks_workdir/`, but the benchmarks will be rebuilt every time. | ||
To avoid that, use `--no-rebuild` option. | ||
|
||
You must be a member of the `oneapi-src` organization to access these features. | ||
## Results | ||
|
||
## Comparing results | ||
By default, the benchmark results are not stored. | ||
To store them, use the option `--save <name>`. This will make the results available for comparison during the next benchmark runs. | ||
To indicate a specific results location, use the option `--results-dir <path>`. | ||
|
||
By default, the benchmark results are not stored. To store them, use the option `--save <name>`. This will make the results available for comparison during the next benchmark runs. | ||
### Comparing results | ||
|
||
You can compare benchmark results using `--compare` option. The comparison will be presented in a markdown output file (see below). If you want to calculate the relative performance of the new results against the previously saved data, use `--compare <previously_saved_data>` (i.e. `--compare baseline`). In case of comparing only stored data without generating new results, use `--dry-run --compare <name1> --compare <name2> --relative-perf <name1>`, where `name1` indicates the baseline for the relative performance calculation and `--dry-run` prevents the script for running benchmarks. Listing more than two `--compare` options results in displaying only execution time, without statistical analysis. | ||
|
||
Baseline_L0, as well as Baseline_L0v2 (for the level-zero adapter v2) is updated automatically during a nightly job. The results | ||
>NOTE: Baseline_L0, as well as Baseline_L0v2 (for the level-zero adapter v2) is updated automatically during a nightly job. | ||
The results | ||
are stored [here](https://oneapi-src.github.io/unified-runtime/performance/). | ||
|
||
## Output formats | ||
### Output formats | ||
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. is the extra |
||
You can display the results in the form of a HTML file by using `--ouptut-html` and a markdown file by using `--output-markdown`. Due to character limits for posting PR comments, the final content of the markdown file might be reduced. In order to obtain the full markdown output, use `--output-markdown full`. | ||
|
||
## Requirements | ||
## Running in CI | ||
|
||
The benchmarks scripts are used in a GitHub Actions worflow, and can be automatically executed on a preconfigured system against any Pull Request. | ||
|
||
### Python | ||
 | ||
|
||
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. | ||
|
||
You can also include additional benchmark parameters, such as environment variables or filters. For a complete list of options, refer to `$ ./main.py --help`. | ||
|
||
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. | ||
|
||
>NOTE: You must be a member of the `oneapi-src` organization to access these features. | ||
|
||
dataclasses-json==0.6.7 | ||
PyYAML==6.0.2 | ||
Mako==1.3.0 | ||
|
||
### System | ||
|
||
|
@@ -72,3 +93,11 @@ compute-runtime (Ubuntu): | |
IGC (Ubuntu): | ||
|
||
`$ sudo apt-get install flex bison libz-dev cmake libc6 libstdc++6 python3-pip` | ||
|
||
|
||
## Contribution | ||
|
||
The requirements and instructions above are for building the project from source | ||
without any modifications. To make modifications to the specification, please see the | ||
[Contribution Guide](https://oneapi-src.github.io/unified-runtime/core/CONTRIB.html) | ||
for more detailed instructions on the correct setup. | ||
Comment on lines
+98
to
+103
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. is the UR CONTRIB actually relevant for benchmark scripts? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please, update this list with gromacs (and umf?) benchmark