OpenMathLib / BLAS-Benchmarks

MIT License
0 stars 0 forks source link

Results

Web version: http://www.openmathlib.org/BLAS-Benchmarks/

Text timings are visible from the Actions tab, for individual arches --- click on an "ASV Benchmarks" workflow run, then select a desired architecture, and expand the "Run benchmarks" section. Here is one example.

Benchmark suite

The suite is similar to the one which runs on PRs to the OpenBLAS repository via codspeed: https://github.com/OpenMathLib/OpenBLAS/tree/develop/benchmark/pybench

CI orchestration

We run the benchmark suite on a cron schedule.

We use three branches:

The reason for this setup is that on each run, asv

Since we use the scipy_openblas32 nightly builds, our main branch itself does not track changes in OpenBLAS (the wheels do). Were we to just benchmark main, all our runs would have been attributed to the same commit --- effectively, a new CI run would overwrite the previous one.

To sidestep this, on each CI run we point asv to the tracker branch, make it functionally equivalent to main, and add a new commit at the beginning of a CI benchmarking run.

Running benchmarks locally

To run the benchmark suite locally, first do

$ python -c "import scipy_openblas32; print(scipy_openblas32.get_pkg_config())" > scipy_openblas.pc
$ export PKG_CONFIG_PATH=$PWD

Then either edit asv.conf.json to point to the main branch:

$ git diff
diff --git a/asv.conf.json b/asv.conf.json
index ded988b..99e4ff3 100644
--- a/asv.conf.json
+++ b/asv.conf.json
@@ -40,7 +40,7 @@

     // List of branches to benchmark. If not provided, defaults to "main"
     // (for git) or "default" (for mercurial).
-       "branches": ["tracker"], // for git
+       "branches": ["main"], // for git
     // "branches": ["default"],    // for mercurial

or update the tracker branch to follow main:

$ git co tracker
$ git revert HEAD
$ git merge --squash main
$ git co main

Finally, run

$ asv run -v