Reproduce#
From the eagle repository root, in an environment with eagle, hawk and CuPy, an NVIDIA
driver for the GPU cards (no CUDA toolkit or nvcc: hawk compiles kernels with NVRTC) and
(optionally) Nsight Systems:
python benchmarks/perf_card/perf_card.py # RK4 oscillators, GPU
python benchmarks/perf_card/cpu_card.py # RK4 oscillators, CPU
python benchmarks/rk78_card/rk78_card.py # RK7(8) Kepler orbits, GPU
python benchmarks/rk78_card/cpu_rk78_card.py # RK7(8) Kepler orbits, CPU
Each run builds the hawk kernel(s), verifies the arms against each other,
times them, and writes its own card_<device>.json together with the
card_<device>.md table the results pages show. The JSON carries the md5 of the script
that produced it; a test re-renders the table from the JSON so the two
cannot drift. --quick runs a reduced matrix as a smoke test.
To reproduce the cards on another machine (Kaggle, a rented GPU or your own box) with the same pinned software, see benchmarks/reproduce/.
The P2000 card ran locally, the T4 on Kaggle, and the other cards on cloud VMs through benchmarks/reproduce/run_cards.sh.
On Kaggle, choose the GPU T4 x2 accelerator, turn Internet on and run the notebook:
Adding a device. Drop the new card_<slug>.json/.md (GPU) or
cpu_card_<slug>.json/.md (CPU) next to the existing ones under
benchmarks/perf_card/ or benchmarks/rk78_card/ – benchmarks/reproduce/run_cards.sh --publish writes them there directly. Rebuilding the docs (make html or make strict) then regenerates the overview and results pages’ tabs and tables
on its own; re-running a card for a device already listed replaces
that device’s rows the same way. No page needs editing.