Files
boost_unordered_benchmarks/.github/workflows/benchmarks.yml
2023-01-14 17:16:05 +01:00

163 lines
5.6 KiB
YAML

name: benchmarks
on:
workflow_dispatch:
pull_request:
push:
branches:
- parallel_hashmap_benchmark
jobs:
posix:
strategy:
fail-fast: false
matrix:
include:
- name: gcc-x64
compiler: g++-11
architecture: -m64
sourcefile: main.cpp
download-datafiles: true
compileroptions: -std=c++2a -O3 -DNDEBUG
outputfile: benchmark
reportdir: gcc-x64
os: [self-hosted, linux, x64]
install: g++-11 curl zip unzip tar pkg-config
command: sudo cset shield --exec -- nice -n -20 sudo -u gha ./benchmark
- name: clang-x64
compiler: clang++-12
architecture: -m64
sourcefile: main.cpp
download-datafiles: true
compileroptions: -std=c++2a -O3 -DNDEBUG
outputfile: benchmark
reportdir: clang-x64
os: [self-hosted, linux, x64]
install: curl zip unzip tar pkg-config
command: sudo cset shield --exec -- nice -n -20 sudo -u gha ./benchmark
- name: clang-arm64
compiler: clang++
architecture: -m64
sourcefile: main.cpp
download-datafiles: false
compileroptions: -std=c++2a -O3 -DNDEBUG
outputfile: benchmark
reportdir: clang-arm64
os: [self-hosted, macOS, ARM64]
command: ./benchmark
xcode_version: 13.4.1
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v3
- name: Install packages
if: matrix.install
run: |
# sudo -E apt-add-repository -y ppa:ubuntu-toolchain-r/test
if uname -p | grep -q 'x86_64'; then sudo dpkg --add-architecture i386 ; fi
sudo apt-get update
sudo apt-get install -y ${{matrix.install}}
- name: Download large data files
if: matrix.download-datafiles
run: |
cd $GITHUB_WORKSPACE
curl http://mattmahoney.net/dc/enwik9.zip --output enwik9.zip
unzip enwik9.zip
rm enwik9.zip
curl http://mattmahoney.net/dc/enwik8.zip --output enwik8.zip
unzip enwik8.zip
rm enwik8.zip
- name: Install Boost
run: |
cd $GITHUB_WORKSPACE
git clone https://github.com/boostorg/boost.git boost-root
cd boost-root
git checkout develop
git submodule update --init
./bootstrap.sh
./b2 -d0 headers
- name: Install oneTBB
run: |
if [ -n "${{matrix.xcode_version}}" ]; then
export PATH=/opt/homebrew/bin:$PATH
cd ~
mkdir -p .vcpkg
touch .vcpkg/vcpkg.path.txt
else
cd $GITHUB_WORKSPACE
mkdir -p .vcpkg
touch .vcpkg/vcpkg.path.txt
fi
cd $GITHUB_WORKSPACE
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh -disableMetrics
./vcpkg integrate install
./vcpkg install tbb
- name: Install libcuckoo
run: |
cd $GITHUB_WORKSPACE
git clone https://github.com/efficient/libcuckoo.git libcuckoo-root
- name: Install gtl
run: |
cd $GITHUB_WORKSPACE
git clone https://github.com/greg7mdp/gtl.git gtl-root
- name: Compile
run: |
cd $GITHUB_WORKSPACE
${{matrix.compiler}} --version
${{matrix.compiler}} ${{matrix.sourcefile}} ${{matrix.architecture}} ${{matrix.compileroptions}} -o ${{matrix.outputfile}} -I$GITHUB_WORKSPACE/boost-root -I$GITHUB_WORKSPACE/vcpkg/installed/x64-linux/include -I$GITHUB_WORKSPACE/libcuckoo-root/libcuckoo -I$GITHUB_WORKSPACE/gtl-root/include -L$GITHUB_WORKSPACE/vcpkg/installed/x64-linux/lib -pthread -ltbb -ltbbmalloc
- name: Set reportfile name
run: |
echo "REPORT_FILE=${{matrix.reportdir}}/${{matrix.sourcefile}}.txt" >> $GITHUB_ENV
- name: Run benchmarks
run: |
if [ -n "${{matrix.xcode_version}}" ]; then
DEVELOPER_DIR=/Applications/Xcode-${{matrix.xcode_version}}.app/Contents/Developer
fi
if [ -n "${{matrix.command}}" ]; then
echo "running benchmarks and saving to "${REPORT_FILE}
${{matrix.command}} | tee ${REPORT_FILE}
else
echo "running benchmarks and saving to "${REPORT_FILE}
./${{matrix.outputfile}} | tee ${REPORT_FILE}
fi
- name: Push benchmark results to repo
run: |
git config --global user.name 'joaquintides'
git config --global user.email 'joaquintides@users.noreply.github.com'
git add ${REPORT_FILE}
git stash -- ${REPORT_FILE}
git pull
git stash pop
git add ${REPORT_FILE}
git commit -m "updated benchmark results"
git push
final:
needs: [posix]
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- name: Install Python2
uses: actions/setup-python@v2
with:
python-version: '2.7.18'
- name: Fast-forward repo
run: |
git pull
- name: Run data feeding script
run: |
./insert_data.sh
- name: Push modified README.md to repo
run: |
git config --global user.name 'joaquintides'
git config --global user.email 'joaquintides@users.noreply.github.com'
git commit -am "updated README.md"
git push