Laundry list about benchmarking
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 30/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Stale
- Domain
- ci-cd, performance
Research direction
Start by locating the repository's justfile and the existing gpu-bench-ci and bench job definitions; compare their feature flags, CUDA handling, and output commands. Done means the two requested comparative jobs provide the stated asm, CUDA, JSON, file-naming, and BENCH_OUTPUT defaults while preserving the existing benchmark invocation.
Written by the indexing model from the issue text.
Description
TL;DR
It would be awesome for bencher if we had two jobs gpu-bench-comparative and bench-comparative with the following properties:
- activate
asmon x86_64, - use or do not use
cudadepending on the nature of the called job, - they use
BENCH_OUTPUT=commit-commentby default, because - they both use
message-format=jsonand pipe to a file named after bench & commit (as gpu-bench-ci does)
In detail
I've been running 6-7 benches (comparative, so 2 runs per) every day, here's the pet peeves outcome:
- if I want to pipe the output (json OR criterion baseline[^1]) into a tool (resp. critcmp or criterion-table), I have to remember to pass an env variable
XXX_BENCH_OUTPUT = "commit-comment", - one thing we've solved : the name of the var is per-repo,
- the other thing: I have to edit the justfile super often : mostly I run 3 benches in parallel, but I don't have 3 gpu-equipped machines
- there are niceties in the gpu-bench-ci job that are not in the bench job,
Arecibo example:
# Run CPU benchmarks
bench +benches:
#!/bin/sh
for bench in {{benches}}; do
cargo criterion --bench $bench
done
# Run CUDA benchmarks on GPU
gpu-bench +benches:
#!/bin/sh
# The `compute`/`sm` number corresponds to the Nvidia GPU architecture
# In this case, the self-hosted machine uses the Ampere architecture, but we want this to be configurable
# See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/
export CUDA_ARCH=$(nvidia-smi --query-gpu=compute_cap --format=csv,noheader | sed 's/\.//g')
export EC_GPU_CUDA_NVCC_ARGS="--fatbin --gpu-architecture=sm_$CUDA_ARCH --generate-code=arch=compute_$CUDA_ARCH,code=sm_$CUDA_ARCH"
export EC_GPU_FRAMEWORK="cuda"
for bench in {{benches}}; do
cargo criterion --bench $bench --features "cuda"
done
# Run CUDA benchmarks on GPU, tuned for CI on Linux x86_64
gpu-bench-ci +benches:
#!/bin/sh
printenv PATH
if [ $(uname -m) = "x86_64" ]; then
FEATURES="cuda,asm"
else
FEATURES="cuda"
fi
for bench in {{benches}}; do
cargo criterion --bench $bench --features $FEATURES --message-format=json > "$bench-{{commit}}".json
done%
- conclusion : I always want the ASM feature, and I most of the time also want json output.
- one thing in the wishlist : if I run one of the jobs that have
message-format=jsonI nearly certainly also wantXX_BENCH_OUTPUT = commit-comment
[^1]: cargo bench --bench foo -- --save-baseline foo_at_main
- Dominant language
- No language data
- Stars
- 0
- Forks
- 3
- Avg merge
- 59m
- Merged PRs (30d)
- 2
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from argumentcomputer/ci-workflows
-
Difficulty 3/5 1-2 days Newbie friendliness 35/100
-
Difficulty 3/5 1-2 days Newbie friendliness 25/100
-
Difficulty 3/5 1-2 days Newbie friendliness 42/100
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
-
Difficulty 3/5 1-2 days Newbie friendliness 35/100
All issues in argumentcomputer/ci-workflows
Similar issues
-
kind/bug needs-triage
Difficulty 1/5 Under an hour Newbie friendliness 72/100
matrixorigin/matrixone#29223 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
copse-dev/agent-pane#2953 ·
-
bug ci-failure high priority
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
vllm-project/vllm-omni#7972 · 1 comment ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
simonw/sqlite-utils#872 ·
-
bug good first issue
Difficulty 1/5 Under an hour Newbie friendliness 88/100
amponce/archive-movie-browser#166 ·