Skip to content

Commit

Permalink
EqBench: Enable to run analysis in CI
Browse files Browse the repository at this point in the history
  • Loading branch information
PLukas2018 committed Nov 11, 2023
1 parent 879640f commit e5e099d
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 0 deletions.
75 changes: 75 additions & 0 deletions .github/workflows/analysis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
name: Analysis of DiffKemp equivalence checking

on: [workflow_dispatch, push]

jobs:
EqBench:
runs-on: ubuntu-latest
# todo refactor with ci.yaml - maybe creating action for building diffkemp
env:
llvm: 16
CC: gcc-9
CXX: g++-9
asan: OFF
steps:
- uses: actions/checkout@v3

- name: Checkout on upstream master
working-directory: ${{ github.workspace }}
run: |
git config --global user.email "test@example.com"
git config --global user.name "test"
git remote add upstream https://github.com/viktormalik/diffkemp.git
git fetch upstream --depth=1
git rebase upstream/master
- name: Get EqBench
working-directory: ${{ github.workspace }}
run: |
git clone https://github.com/shrBadihi/EqBench.git
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.9

- name: Install Dependencies
working-directory: ${{ github.workspace }}
shell: bash
run: |
sudo apt-get install bc cscope libelf-dev ninja-build
pip install -r requirements.txt
- name: Install LLVM
run: |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
sudo add-apt-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-${llvm} main"
sudo apt-get update
sudo apt-get install llvm-${llvm} llvm-${llvm}-dev clang-${llvm}
sudo ln -s /usr/lib/llvm-${llvm} /usr/local/lib/llvm
echo "/usr/lib/llvm-${llvm}/bin" >> $GITHUB_PATH
- name: Prepare Build Environment
run: |
mkdir -p ${{ github.workspace }}/build
- name: CMake
working-directory: ${{ github.workspace }}/build
shell: bash
run: cmake $GITHUB_WORKSPACE -GNinja -DSANITIZE_ADDRESS=${{ env.asan }} -DVENDOR_GTEST=On

- name: Build
working-directory: ${{ github.workspace }}/build
run: ninja

- name: Install EqBench runner dependencies
run: |
pip3 install tabulate progressbar
- name: Install
working-directory: ${{ github.workspace }}
run: pip3 install -e .

- name: Run analysis
working-directory: ${{ github.workspace }}
run: |
eqbench_scripts/analysis compare-multiple eqbench-results EqBench
9 changes: 9 additions & 0 deletions eqbench_scripts/analysis
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import os
import re
import shutil
import subprocess
import tabulate
from pathlib import Path
from tempfile import mkdtemp

Expand Down Expand Up @@ -73,6 +74,7 @@ def get_total(output_dir):
program_level_pattern = re.compile(
r"^\| program-level +\| *(\d+) \| +(\d+) \| +(\d+) \| +(\d+) \|$",
re.MULTILINE)
results = []
for run in RUNS:
result_file = os.path.join(output_dir, run[RUN_FILE], "result.md")
with open(result_file, "r") as file:
Expand All @@ -89,6 +91,13 @@ def get_total(output_dir):
using_passes, str(run[RUN_DISABLE_PATTERNS])]
result.extend(function_program_total)
print(";".join(result), flush=True)
results.append(result)
if os.getenv("GITHUB_STEP_SUMMARY"):
table = tabulate.tabulate(results, headers=head, tablefmt="pipe")
with open(os.getenv("GITHUB_STEP_SUMMARY"), "a") as file:
print(file=file)
print("## Total results\n", file=file)
print(table, file=file)


def create_command(output_dir, eqbench_repo_path,
Expand Down
6 changes: 6 additions & 0 deletions eqbench_scripts/run
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ import tabulate
from pathlib import Path
from progressbar import ProgressBar
import json
import os
import re
import shutil
import subprocess
Expand Down Expand Up @@ -345,6 +346,11 @@ class EqBenchRun:
headers=header, tablefmt="pipe")
print(report)

# Printing result summary if runs by github workflow
github_step_summary = os.getenv("GITHUB_STEP_SUMMARY")
if github_step_summary:
with open(github_step_summary, "a") as file:
print(report, file=file)
# Saving summarisation of results to file
report += f"\n\n(only-compare: {self.only_compare})\n"
with open(Path(self.output_dir, "result.md"), "w") as file:
Expand Down

0 comments on commit e5e099d

Please sign in to comment.