mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
Add nightly benchmark regression detection pipeline
libeigen/eigen!2349 Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com>
This commit is contained in:
45
ci/scripts/build.benchmark.sh
Executable file
45
ci/scripts/build.benchmark.sh
Executable file
@@ -0,0 +1,45 @@
|
||||
#!/bin/bash
|
||||
# Build Eigen benchmarks for a given ISA target.
|
||||
#
|
||||
# Expected environment variables:
|
||||
# EIGEN_CI_BUILDDIR - build directory (default: .bench-build)
|
||||
# EIGEN_CI_CXX_COMPILER - C++ compiler
|
||||
# EIGEN_CI_C_COMPILER - C compiler
|
||||
# EIGEN_BENCH_ISA_FLAGS - ISA-specific compiler flags (e.g. "-mavx2 -mfma")
|
||||
|
||||
set -ex
|
||||
|
||||
rootdir=$(pwd)
|
||||
builddir=${EIGEN_CI_BUILDDIR:-.bench-build}
|
||||
mkdir -p "${builddir}"
|
||||
cd "${builddir}"
|
||||
|
||||
# Install Google Benchmark from source if not already present.
|
||||
# The common before_script already installs cmake/ninja; we only need
|
||||
# git and ca-certificates for the clone.
|
||||
if ! pkg-config --exists benchmark 2>/dev/null; then
|
||||
apt-get update -qq
|
||||
apt-get install -y --no-install-recommends git ca-certificates
|
||||
git clone --depth 1 --branch v1.9.1 https://github.com/google/benchmark.git /tmp/gbench
|
||||
cmake -G Ninja -S /tmp/gbench -B /tmp/gbench-build \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DBENCHMARK_ENABLE_TESTING=OFF \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr/local
|
||||
cmake --build /tmp/gbench-build --target install
|
||||
rm -rf /tmp/gbench /tmp/gbench-build
|
||||
fi
|
||||
|
||||
# Configure benchmarks. ISA flags are passed via CMAKE_CXX_FLAGS so they
|
||||
# apply globally to all benchmark targets.
|
||||
cmake -G Ninja \
|
||||
-DCMAKE_CXX_COMPILER="${EIGEN_CI_CXX_COMPILER}" \
|
||||
-DCMAKE_C_COMPILER="${EIGEN_CI_C_COMPILER}" \
|
||||
-DCMAKE_CXX_FLAGS="${EIGEN_BENCH_ISA_FLAGS}" \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
"${rootdir}/benchmarks"
|
||||
|
||||
# Build all benchmark targets. The nightly/weekly scope filtering happens
|
||||
# at run time, not build time.
|
||||
cmake --build . -- -k0 || cmake --build . -- -k0 -j1
|
||||
|
||||
cd "${rootdir}"
|
||||
Reference in New Issue
Block a user