Vlasov-Ampere, CPU node vs GPU node
The same Landau damping problem on a CPU node and on a GPU node. The GPU run records how long the GPU was busy, and what it spends on copying data to it.
Tags: cpu, gpu
| run | file | recorded | ranks | threads | wall time | vs baseline | files | page |
|---|---|---|---|---|---|---|---|---|
| CPU node | cpu-node.h5 | 2026-10-17 12:00 UTC | 8 | 2 | 385 ms | baseline | 2 | run page |
| GPU node | gpu-node.h5 | 2026-10-17 12:00 UTC | 4 | 1 | 89.5 ms | −76.7% | 2 | run page |
Each run's page is linked on the right.
What changed
Section titled “What changed”Durations
Section titled “Durations”Charts
Section titled “Charts”Region durations
Grouped bars compare each region's mean call duration across the profiled runs.
Change: GPU node vs CPU node
Percent change in each region's total duration, candidate over baseline. Bars above zero got slower; a region measured in only one run leaves a gap rather than reading as a 100% change.
Rank imbalance
Each line compares a region's total duration by rank; its dashed line marks the mean across ranks. Points far from the mean identify stragglers.
Rank heatmap
This heatmap uses exclusive timings. Exclusive duration is the time spent in a region itself, excluding time spent in nested child regions; this prevents the enclosing session region from dominating the heatmap.
Metadata
Section titled “Metadata”| commit | 0000000 |
|---|---|
| system | synthetic |
Download run.py (715 B) View source ↗
"""Landau damping of a Langmuir wave with a Vlasov-Ampere solver: the script both runs use."""
import sys
import yamlfrom scope_profiler import ProfileManager
def main(parameter_file): with open(parameter_file) as handle: parameters = yaml.safe_load(handle) with ProfileManager.session(label=parameters["label"]): with ProfileManager.region("setup"): state = initialise(parameters) for _ in range(parameters["steps"]): with ProfileManager.region("solve"): state = advance(state, parameters["dt"]) with ProfileManager.region("exchange"): exchange_halos(state)
if __name__ == "__main__": main(sys.argv[1])