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 e3f2442 commit d42308d
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 0 deletions.
68 changes: 68 additions & 0 deletions .github/workflows/analysis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
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 remote -v
git rebase 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
working-directory: ${{ github.workspace }}
run: pip3 install -e .

- name: Run analysis
working-directory: ${{ github.workspace }}
run: |
eqbench_scripts/analysis compare-multiple eqbench-results EqBench
8 changes: 8 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
from tabulate 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 @@ -87,6 +89,12 @@ def get_total(output_dir):
"same as build-kernel uses" if run[RUN_USE_LLVM_OPT] else "",
run[RUN_DISABLE_PATTERNS], *function_program_total]
print(";".join(result), flush=True)
results.append(result)
if "GITHUB_STEP_SUMMARY" in os.environ:
table = tabulate(results, headers=head, tablefmt="pipe")
with open(os.enviros["GITHUB_STEP_SUMMARY"], "a") as file:
print("## Total results")
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 d42308d

Please sign in to comment.