diff --git a/.github/workflows/cirun-asv.yml b/.github/workflows/cirun-asv.yml index 1b00052e1..0f9db5f62 100644 --- a/.github/workflows/cirun-asv.yml +++ b/.github/workflows/cirun-asv.yml @@ -71,7 +71,7 @@ jobs: - name: Set and log asv machine configuration run: | - cd benchmark/pybench + cd benchmark/pybench/asv python3 -m asv machine --yes --config asv.conf.json echo "Machine Configuration:" cat ~/.asv-machine.json @@ -81,94 +81,11 @@ jobs: python3 -m asv machine --machine $MACHINE_NAME --yes --config $ASV_CONFIG -v cat ~/.asv-machine.json - ###################### - - - - name: Compilation cache - uses: actions/cache@v3 - with: - path: ~/.ccache - # We include the commit sha in the cache key, as new cache entries are - # only created if there is no existing entry for the key yet. - # GNU make and cmake call the compilers differently. It looks like - # that causes the cache to mismatch. Keep the ccache for both build - # tools separate to avoid polluting each other. - key: ccache-${{ runner.os }}-${{ matrix.build }}-${{ matrix.fortran }}-${{ github.ref }}-${{ github.sha }} - # Restore a matching ccache cache entry. Prefer same branch and same Fortran compiler. - restore-keys: | - ccache-${{ runner.os }}-${{ matrix.build }}-${{ matrix.fortran }}-${{ github.ref }} - ccache-${{ runner.os }}-${{ matrix.build }}-${{ matrix.fortran }} - ccache-${{ runner.os }}-${{ matrix.build }} - - - name: Configure ccache - run: | - if [ "${{ matrix.build }}" = "make" ]; then - # Add ccache to path - if [ "$RUNNER_OS" = "Linux" ]; then - echo "/usr/lib/ccache" >> $GITHUB_PATH - else - echo "::error::$RUNNER_OS not supported" - exit 1 - fi - fi - # Limit the maximum size and switch on compression to avoid exceeding the total disk or cache quota (5 GB). - test -d ~/.ccache || mkdir -p ~/.ccache - echo "max_size = 300M" > ~/.ccache/ccache.conf - echo "compression = true" >> ~/.ccache/ccache.conf - ccache -s - - - name: Build OpenBLAS - run: | - case "${{ matrix.build }}" in - "make") - make -j$(nproc) DYNAMIC_ARCH=1 USE_OPENMP=0 FC="ccache ${{ matrix.fortran }}" - ;; - "cmake") - mkdir build && cd build - cmake -DDYNAMIC_ARCH=1 \ - -DNOFORTRAN=0 \ - -DBUILD_WITHOUT_LAPACK=0 \ - -DCMAKE_VERBOSE_MAKEFILE=ON \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_Fortran_COMPILER=${{ matrix.fortran }} \ - -DCMAKE_C_COMPILER_LAUNCHER=ccache \ - -DCMAKE_Fortran_COMPILER_LAUNCHER=ccache \ - .. - cmake --build . - ;; - *) - echo "::error::Configuration not supported" - exit 1 - ;; - esac - make install PREFIX=$HOME/built-libs - - - name: Show ccache status - continue-on-error: true - run: ccache -s - - - name: Install benchmarking dependencies - run: pip3 install meson ninja numpy pytest pytest-benchmark --user - - - name: Build the wrapper - run: | - cd benchmark/pybench - export PKG_CONFIG_PATH=$HOME/built-libs/lib/pkgconfig - export PATH=$HOME/.local/bin:$PATH - meson setup build --prefix=$PWD/build-install - meson install -C build - # - # sanity check - cd build/openblas_wrap - python3 -c'import _flapack; print(dir(_flapack))' - # - # copy the built .so (ubuntu linker!) - cp _flapack.cpython-*-aarch64-linux-gnu.so ../../build-install/lib/python3/dist-packages/openblas_wrap - - name: Run benchmarks run: | - cd benchmark/pybench - export PATH=$HOME/.local/bin:$PATH - export PYTHONPATH=$PWD/build-install/lib/python3/dist-packages/ - OPENBLAS_NUM_THREADS=1 pytest benchmarks/bench_blas.py + echo ${{ github.workspace}} + cd benchmark/pybench/asv + python3 -m asv run --config $ASV_CONFIG -v + env: + PKG_CONFIG_PATH: ${{ github.workspace }}