Skip to content

Commit

Permalink
Add Hyper Threading benchmarks workflow (#1711)
Browse files Browse the repository at this point in the history
* Add hyper threading workflow

* Add thread_counts

* Remove downloads and uploads

* Revert "Remove downloads and uploads"

This reverts commit 3e324ff.

* Remove downloads and uploads of main binary

* use echo -e

* use printf

* eval

* use 2 endlines

---------

Co-authored-by: Pedro Fontana <[email protected]>
  • Loading branch information
pefontana and Pedro Fontana authored Apr 16, 2024
1 parent e629428 commit 584eaa2
Show file tree
Hide file tree
Showing 2 changed files with 144 additions and 0 deletions.
110 changes: 110 additions & 0 deletions .github/workflows/hyper_threading_benchmarks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
name: Benchmark Hyper Threading

on:
pull_request:
branches:
- main

jobs:
benchmark:
runs-on: ubuntu-latest
steps:
- name: Checkout PR
uses: actions/checkout@v2
with:
ref: ${{ github.head_ref }}

- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.9'

- name: Install Dependencies
run: |
pip install -r requirements.txt
sudo apt update
sudo apt-get install -y hyperfine
- name: Install Rust
uses: dtolnay/[email protected]
with:
components: rustfmt, clippy

- name: Compile PR Version
run: |
cargo build --release -p hyper_threading
cp target/release/hyper_threading ${{ github.workspace }}/hyper_threading_pr
cp ./examples/hyper_threading/hyper-threading-workflow.sh ${{ github.workspace }}/hyper-threading-workflow.sh
- name: Upload PR Binary
uses: actions/upload-artifact@v4
with:
name: hyper_threading_pr_binary
path: ${{ github.workspace }}/hyper_threading_pr

- name: Upload Workflow Script
uses: actions/upload-artifact@v4
with:
name: hyper_threading_workflow_script
path: ${{ github.workspace }}/hyper-threading-workflow.sh


- name: Checkout Main Branch
uses: actions/checkout@v2
with:
ref: 'main'

- name: Compile Main Version
run: |
cargo build --release -p hyper_threading
cp target/release/hyper_threading ${{ github.workspace }}/hyper_threading_main
- name: Download hyper_threading_pr_binary
uses: actions/download-artifact@v4
with:
name: hyper_threading_pr_binary
path: ${{ github.workspace }}/

- name: Download hyper_threading_workflow_script
uses: actions/download-artifact@v4
with:
name: hyper_threading_workflow_script
path: ${{ github.workspace }}/

- name: Compile programs
run: make cairo_bench_programs

- name: Run Benchmarks
run: |
cd ${{ github.workspace }}
chmod +x ./hyper_threading_main
chmod +x ./hyper_threading_pr
chmod +x hyper-threading-workflow.sh
./hyper-threading-workflow.sh
- name: Compare Results
run: |
cat result.md
- name: Find comment
uses: peter-evans/find-comment@v2
id: fc
with:
issue-number: ${{ github.event.pull_request.number }}
comment-author: 'github-actions[bot]'
body-includes: "**Hyper Thereading Benchmark results**"

- name: Create comment
if: steps.fc.outputs.comment-id == ''
uses: peter-evans/create-or-update-comment@v3
with:
issue-number: ${{ github.event.pull_request.number }}
body-path: result.md

- name: Update comment
if: steps.fc.outputs.comment-id != ''
uses: peter-evans/create-or-update-comment@v3
with:
comment-id: ${{ steps.fc.outputs.comment-id }}
body-path: result.md
edit-mode: replace
34 changes: 34 additions & 0 deletions examples/hyper_threading/hyper-threading-workflow.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#!/bin/bash

# Define a list of RAYON_NUM_THREADS
thread_counts=(1 2 4 6 8 16 )

# Define binary names
binaries=("hyper_threading_main" "hyper_threading_pr")

echo -e "**Hyper Thereading Benchmark results**" >> result.md
printf "\n\n" >> result.md

# Iter over thread_counts
for threads in "${thread_counts[@]}"; do
# Initialize hyperfine command
cmd="hyperfine -r 2"

# Add each binary to the command with the current threads value
for binary in "${binaries[@]}"; do
cmd+=" -n \"${binary} threads: ${threads}\" 'RAYON_NUM_THREADS=${threads} ./${binary}'"
done

# Execute
echo "Running benchmark for ${threads} threads"
printf "\n\n" >> result.md
echo -e $cmd >> result.md
eval $cmd >> result.md
printf "\n\n" >> result.md
done

{
echo -e '```'
cat result.md
echo -e '```'
} > temp_result.md && mv temp_result.md result.md

0 comments on commit 584eaa2

Please sign in to comment.