From c3e3764645ae63c35912ec706483abef7c347982 Mon Sep 17 00:00:00 2001 From: Pedro Fontana Date: Fri, 12 Apr 2024 19:12:25 -0300 Subject: [PATCH 1/9] Add hyper threading workflow --- .../workflows/hyper_threading_benchmarks.yml | 123 ++++++++++++++++++ .../hyper-threading-workflow.sh | 34 +++++ 2 files changed, 157 insertions(+) create mode 100644 .github/workflows/hyper_threading_benchmarks.yml create mode 100644 examples/hyper_threading/hyper-threading-workflow.sh diff --git a/.github/workflows/hyper_threading_benchmarks.yml b/.github/workflows/hyper_threading_benchmarks.yml new file mode 100644 index 0000000000..ccbe764be5 --- /dev/null +++ b/.github/workflows/hyper_threading_benchmarks.yml @@ -0,0 +1,123 @@ +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/rust-toolchain@1.74.1 + 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: Upload Main Binary + uses: actions/upload-artifact@v4 + with: + name: hyper_threading_main_binary + path: ${{ 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: Download hyper_threading_main_binary + uses: actions/download-artifact@v4 + with: + name: hyper_threading_main_binary + 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 diff --git a/examples/hyper_threading/hyper-threading-workflow.sh b/examples/hyper_threading/hyper-threading-workflow.sh new file mode 100644 index 0000000000..87fc937c57 --- /dev/null +++ b/examples/hyper_threading/hyper-threading-workflow.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# Define a list of RAYON_NUM_THREADS +thread_counts=(2 4) + +# Define binary names +binaries=("hyper_threading_main" "hyper_threading_pr") + +echo "**Hyper Thereading Benchmark results**" >> result.md +echo "\n \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" + echo "\n \n \n " >> result.md + echo $cmd >> result.md + eval $cmd >> result.md + echo "\n \n \n " >> result.md +done + +{ + echo '```' + cat result.md + echo '```' +} > temp_result.md && mv temp_result.md result.md From 5c721231a6a1f0ec8aafbea95bf1b92d3e27c856 Mon Sep 17 00:00:00 2001 From: Pedro Fontana Date: Fri, 12 Apr 2024 19:17:10 -0300 Subject: [PATCH 2/9] Add thread_counts --- examples/hyper_threading/hyper-threading-workflow.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/hyper_threading/hyper-threading-workflow.sh b/examples/hyper_threading/hyper-threading-workflow.sh index 87fc937c57..62973d07d5 100644 --- a/examples/hyper_threading/hyper-threading-workflow.sh +++ b/examples/hyper_threading/hyper-threading-workflow.sh @@ -1,7 +1,7 @@ #!/bin/bash # Define a list of RAYON_NUM_THREADS -thread_counts=(2 4) +thread_counts=(1 2 4 6 8 16 ) # Define binary names binaries=("hyper_threading_main" "hyper_threading_pr") From 3e324ff26b832e252f868d7bea711dacc0b21392 Mon Sep 17 00:00:00 2001 From: Pedro Fontana Date: Mon, 15 Apr 2024 17:53:28 -0300 Subject: [PATCH 3/9] Remove downloads and uploads --- .../workflows/hyper_threading_benchmarks.yml | 38 ------------------- 1 file changed, 38 deletions(-) diff --git a/.github/workflows/hyper_threading_benchmarks.yml b/.github/workflows/hyper_threading_benchmarks.yml index ccbe764be5..33af560f2b 100644 --- a/.github/workflows/hyper_threading_benchmarks.yml +++ b/.github/workflows/hyper_threading_benchmarks.yml @@ -36,19 +36,6 @@ jobs: 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: @@ -59,31 +46,6 @@ jobs: cargo build --release -p hyper_threading cp target/release/hyper_threading ${{ github.workspace }}/hyper_threading_main - - name: Upload Main Binary - uses: actions/upload-artifact@v4 - with: - name: hyper_threading_main_binary - path: ${{ 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: Download hyper_threading_main_binary - uses: actions/download-artifact@v4 - with: - name: hyper_threading_main_binary - path: ${{ github.workspace }}/ - - - name: Compile programs run: make cairo_bench_programs From 3da63dd03f6296db1629dd599a6ac5596038b7bd Mon Sep 17 00:00:00 2001 From: Pedro Fontana Date: Mon, 15 Apr 2024 17:58:21 -0300 Subject: [PATCH 4/9] Revert "Remove downloads and uploads" This reverts commit 3e324ff26b832e252f868d7bea711dacc0b21392. --- .../workflows/hyper_threading_benchmarks.yml | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/.github/workflows/hyper_threading_benchmarks.yml b/.github/workflows/hyper_threading_benchmarks.yml index 33af560f2b..ccbe764be5 100644 --- a/.github/workflows/hyper_threading_benchmarks.yml +++ b/.github/workflows/hyper_threading_benchmarks.yml @@ -36,6 +36,19 @@ jobs: 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: @@ -46,6 +59,31 @@ jobs: cargo build --release -p hyper_threading cp target/release/hyper_threading ${{ github.workspace }}/hyper_threading_main + - name: Upload Main Binary + uses: actions/upload-artifact@v4 + with: + name: hyper_threading_main_binary + path: ${{ 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: Download hyper_threading_main_binary + uses: actions/download-artifact@v4 + with: + name: hyper_threading_main_binary + path: ${{ github.workspace }}/ + + - name: Compile programs run: make cairo_bench_programs From 0726f23e5abeccb49a2ee0e01d8f3de69c3345ba Mon Sep 17 00:00:00 2001 From: Pedro Fontana Date: Mon, 15 Apr 2024 17:59:26 -0300 Subject: [PATCH 5/9] Remove downloads and uploads of main binary --- .github/workflows/hyper_threading_benchmarks.yml | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/.github/workflows/hyper_threading_benchmarks.yml b/.github/workflows/hyper_threading_benchmarks.yml index ccbe764be5..cebfa0084c 100644 --- a/.github/workflows/hyper_threading_benchmarks.yml +++ b/.github/workflows/hyper_threading_benchmarks.yml @@ -59,12 +59,6 @@ jobs: cargo build --release -p hyper_threading cp target/release/hyper_threading ${{ github.workspace }}/hyper_threading_main - - name: Upload Main Binary - uses: actions/upload-artifact@v4 - with: - name: hyper_threading_main_binary - path: ${{ github.workspace }}/hyper_threading_main - - name: Download hyper_threading_pr_binary uses: actions/download-artifact@v4 with: @@ -77,13 +71,6 @@ jobs: name: hyper_threading_workflow_script path: ${{ github.workspace }}/ - - name: Download hyper_threading_main_binary - uses: actions/download-artifact@v4 - with: - name: hyper_threading_main_binary - path: ${{ github.workspace }}/ - - - name: Compile programs run: make cairo_bench_programs From 11b0c55754a0ddbcc818e758f5f7d4de7f9ee677 Mon Sep 17 00:00:00 2001 From: Pedro Fontana Date: Tue, 16 Apr 2024 18:00:59 -0300 Subject: [PATCH 6/9] use echo -e --- examples/hyper_threading/hyper-threading-workflow.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/hyper_threading/hyper-threading-workflow.sh b/examples/hyper_threading/hyper-threading-workflow.sh index 62973d07d5..731144a8b1 100644 --- a/examples/hyper_threading/hyper-threading-workflow.sh +++ b/examples/hyper_threading/hyper-threading-workflow.sh @@ -6,8 +6,8 @@ thread_counts=(1 2 4 6 8 16 ) # Define binary names binaries=("hyper_threading_main" "hyper_threading_pr") -echo "**Hyper Thereading Benchmark results**" >> result.md -echo "\n \n \n " >> result.md +echo -e "**Hyper Thereading Benchmark results**" >> result.md +echo -e "\n \n \n " >> result.md # Iter over thread_counts for threads in "${thread_counts[@]}"; do @@ -21,10 +21,10 @@ for threads in "${thread_counts[@]}"; do # Execute echo "Running benchmark for ${threads} threads" - echo "\n \n \n " >> result.md - echo $cmd >> result.md - eval $cmd >> result.md - echo "\n \n \n " >> result.md + echo -e "\n \n \n " >> result.md + echo -e $cmd >> result.md + eval -e $cmd >> result.md + echo -e "\n \n \n " >> result.md done { From 7cfd7af121825b02648286f494a7ca33badb3e97 Mon Sep 17 00:00:00 2001 From: Pedro Fontana Date: Tue, 16 Apr 2024 18:11:17 -0300 Subject: [PATCH 7/9] use printf --- examples/hyper_threading/hyper-threading-workflow.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/hyper_threading/hyper-threading-workflow.sh b/examples/hyper_threading/hyper-threading-workflow.sh index 731144a8b1..bbaf132c30 100644 --- a/examples/hyper_threading/hyper-threading-workflow.sh +++ b/examples/hyper_threading/hyper-threading-workflow.sh @@ -7,7 +7,7 @@ thread_counts=(1 2 4 6 8 16 ) binaries=("hyper_threading_main" "hyper_threading_pr") echo -e "**Hyper Thereading Benchmark results**" >> result.md -echo -e "\n \n \n " >> result.md +printf "\n\n\n" >> result.md # Iter over thread_counts for threads in "${thread_counts[@]}"; do @@ -21,14 +21,14 @@ for threads in "${thread_counts[@]}"; do # Execute echo "Running benchmark for ${threads} threads" - echo -e "\n \n \n " >> result.md + printf "\n\n\n" >> result.md echo -e $cmd >> result.md eval -e $cmd >> result.md - echo -e "\n \n \n " >> result.md + printf "\n\n\n" >> result.md done { - echo '```' + echo -e '```' cat result.md - echo '```' + echo -e '```' } > temp_result.md && mv temp_result.md result.md From cfca75b9014a6294d7084a5416be03e47e19b995 Mon Sep 17 00:00:00 2001 From: Pedro Fontana Date: Tue, 16 Apr 2024 18:18:06 -0300 Subject: [PATCH 8/9] eval --- examples/hyper_threading/hyper-threading-workflow.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/hyper_threading/hyper-threading-workflow.sh b/examples/hyper_threading/hyper-threading-workflow.sh index bbaf132c30..1807544329 100644 --- a/examples/hyper_threading/hyper-threading-workflow.sh +++ b/examples/hyper_threading/hyper-threading-workflow.sh @@ -23,7 +23,7 @@ for threads in "${thread_counts[@]}"; do echo "Running benchmark for ${threads} threads" printf "\n\n\n" >> result.md echo -e $cmd >> result.md - eval -e $cmd >> result.md + eval $cmd >> result.md printf "\n\n\n" >> result.md done From a005262c7c3659fa01d933a65c3a82027a9c12f2 Mon Sep 17 00:00:00 2001 From: Pedro Fontana Date: Tue, 16 Apr 2024 18:29:48 -0300 Subject: [PATCH 9/9] use 2 endlines --- examples/hyper_threading/hyper-threading-workflow.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/hyper_threading/hyper-threading-workflow.sh b/examples/hyper_threading/hyper-threading-workflow.sh index 1807544329..5ab1cb1019 100644 --- a/examples/hyper_threading/hyper-threading-workflow.sh +++ b/examples/hyper_threading/hyper-threading-workflow.sh @@ -7,7 +7,7 @@ thread_counts=(1 2 4 6 8 16 ) binaries=("hyper_threading_main" "hyper_threading_pr") echo -e "**Hyper Thereading Benchmark results**" >> result.md -printf "\n\n\n" >> result.md +printf "\n\n" >> result.md # Iter over thread_counts for threads in "${thread_counts[@]}"; do @@ -21,10 +21,10 @@ for threads in "${thread_counts[@]}"; do # Execute echo "Running benchmark for ${threads} threads" - printf "\n\n\n" >> result.md + printf "\n\n" >> result.md echo -e $cmd >> result.md eval $cmd >> result.md - printf "\n\n\n" >> result.md + printf "\n\n" >> result.md done {