Skip to content

Commit de9e0ec

Browse files
Merge branch 'main' into feat/private-input-v2
2 parents d610c84 + b9a6af4 commit de9e0ec

2 files changed

Lines changed: 90 additions & 0 deletions

File tree

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
#!/bin/bash
2+
set -euo pipefail
3+
4+
WEBHOOK_URL="$1"
5+
6+
if [ -z "$WEBHOOK_URL" ]; then
7+
echo "SLACK_WEBHOOK not configured, skipping notification."
8+
exit 0
9+
fi
10+
11+
METRICS_FILE="bench_vs_artifacts/metrics.txt"
12+
13+
if [ ! -f "$METRICS_FILE" ]; then
14+
curl -X POST "$WEBHOOK_URL" \
15+
-H 'Content-Type: application/json; charset=utf-8' \
16+
--data '{"blocks":[{"type":"header","text":{"type":"plain_text","text":"Lambda VM vs SP1 v6 - Nightly Benchmark"}},{"type":"section","text":{"type":"mrkdwn","text":":x: Benchmark failed - no metrics found. Check the workflow logs."}}]}'
17+
exit 0
18+
fi
19+
20+
parse_metric() {
21+
{ grep "^${1}=" "$METRICS_FILE" || true; } | cut -d= -f2-
22+
}
23+
24+
TARGET_STEPS_SERIES=$(parse_metric "target_steps_series")
25+
LAMBDA_TIMES=$(parse_metric "lambda_times")
26+
SP1_TIMES=$(parse_metric "sp1_times")
27+
RATIOS=$(parse_metric "ratios")
28+
TARGET_CYCLES=$(parse_metric "target_cycles")
29+
TARGET_CYCLES="${TARGET_CYCLES:-500000000}"
30+
LAMBDA_PROJECTED_H=$(parse_metric "lambda_projected_time_h")
31+
SP1_PROJECTED_H=$(parse_metric "sp1_projected_time_h")
32+
LAMBDA_R2=$(parse_metric "lambda_r2")
33+
SP1_R2=$(parse_metric "sp1_r2")
34+
35+
IFS='/' read -ra STEPS_ARR <<< "${TARGET_STEPS_SERIES:-}"
36+
IFS='/' read -ra LAMBDA_ARR <<< "${LAMBDA_TIMES:-}"
37+
IFS='/' read -ra SP1_ARR <<< "${SP1_TIMES:-}"
38+
IFS='/' read -ra RATIO_ARR <<< "${RATIOS:-}"
39+
40+
RESULTS_MRKDWN=""
41+
for i in "${!STEPS_ARR[@]}"; do
42+
steps="${STEPS_ARR[$i]}"
43+
[ -z "$steps" ] && continue
44+
lambda_t="${LAMBDA_ARR[$i]:-n/a}"
45+
sp1_t="${SP1_ARR[$i]:-n/a}"
46+
ratio="${RATIO_ARR[$i]:-n/a}"
47+
steps_m=$(LC_NUMERIC=C awk -v s="$steps" 'BEGIN { printf "%dM", s/1000000 }')
48+
if [ "$ratio" != "n/a" ]; then
49+
ratio_fmt=$(LC_NUMERIC=C awk -v r="$ratio" 'BEGIN { printf "%.2fx", r }')
50+
line="*${steps_m} steps:* Lambda ${lambda_t}s / SP1 ${sp1_t}s - ratio ${ratio_fmt}"
51+
else
52+
line="*${steps_m} steps:* Lambda ${lambda_t}s / SP1 ${sp1_t}s"
53+
fi
54+
if [ -n "$RESULTS_MRKDWN" ]; then
55+
RESULTS_MRKDWN="${RESULTS_MRKDWN}\\n${line}"
56+
else
57+
RESULTS_MRKDWN="$line"
58+
fi
59+
done
60+
61+
if [ -z "$RESULTS_MRKDWN" ]; then
62+
RESULTS_MRKDWN="(no data)"
63+
fi
64+
65+
PROJ_SECTION=""
66+
if [ -n "$LAMBDA_PROJECTED_H" ] || [ -n "$SP1_PROJECTED_H" ]; then
67+
TARGET_M=$(LC_NUMERIC=C awk -v c="$TARGET_CYCLES" 'BEGIN { printf "%dM", c/1000000 }')
68+
PROJ_MRKDWN="Projected @ ${TARGET_M} cycles:"
69+
if [ -n "$LAMBDA_PROJECTED_H" ]; then
70+
line="*Lambda VM:* ${LAMBDA_PROJECTED_H}h"
71+
[ -n "$LAMBDA_R2" ] && line="$line (R2=${LAMBDA_R2})"
72+
PROJ_MRKDWN="${PROJ_MRKDWN}\\n${line}"
73+
fi
74+
if [ -n "$SP1_PROJECTED_H" ]; then
75+
line="*SP1 v6:* ${SP1_PROJECTED_H}h"
76+
[ -n "$SP1_R2" ] && line="$line (R2=${SP1_R2})"
77+
PROJ_MRKDWN="${PROJ_MRKDWN}\\n${line}"
78+
fi
79+
PROJ_SECTION=',{"type":"divider"},{"type":"header","text":{"type":"plain_text","text":"Linear Projection"}},{"type":"section","text":{"type":"mrkdwn","text":"'"$PROJ_MRKDWN"'"}}'
80+
fi
81+
82+
curl -X POST "$WEBHOOK_URL" \
83+
-H 'Content-Type: application/json; charset=utf-8' \
84+
--data '{"blocks":[{"type":"header","text":{"type":"plain_text","text":"Lambda VM vs SP1 v6 - Nightly Benchmark"}},{"type":"divider"},{"type":"section","text":{"type":"mrkdwn","text":"'"$RESULTS_MRKDWN"'"}}'"$PROJ_SECTION"']}'

.github/workflows/bench-vs-nightly.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,9 @@ jobs:
5656

5757
- name: Publish summary
5858
run: cat bench_vs_artifacts/summary.md >> "$GITHUB_STEP_SUMMARY"
59+
60+
- name: Post results to Slack
61+
if: always()
62+
env:
63+
SLACK_WEBHOOK: ${{ github.event_name == 'workflow_dispatch' && secrets.BENCH_VS_SLACK_WEBHOOK_TEST || secrets.BENCH_VS_SLACK_WEBHOOK }}
64+
run: sh .github/scripts/publish_bench_vs.sh "$SLACK_WEBHOOK"

0 commit comments

Comments
 (0)