# RK4 oscillators: results

The RK4 oscillator workload runs on both a GPU and a CPU; each device gets
its own card, generated by its own script (`perf_card.py` / `cpu_card.py`),
so the arm lists differ (the GPU card also includes a CPU OpenMP row as its
correctness reference, at 8 threads only; the CPU card is the fuller
CPU-side comparison, with 1- and 8-thread hawk + eagle rows plus Numba, JAX,
multiprocessing and plain Python).

Pick a device with the tabs; the choice carries over to the other results pages.
Inside a device, the tabs switch the workload (spread or uniform stop steps),
and the table of every arm and every N is collapsed under its charts.
How to read the numbers: [Reading the numbers](reading.md).

## GPU

```{include} /content/_generated/perf_card_gpu.md
```

## CPU

```{include} /content/_generated/perf_card_cpu.md
```
