Skip to content
Projects

Vlasov-Ampere, CPU node vs GPU node

all 6all levels

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

runfilerecordedranksthreadswall timevs baselinefilespage
CPU nodecpu-node.h52026-10-17 12:00 UTC82385 msbaseline2run page
GPU nodegpu-node.h52026-10-17 12:00 UTC4189.5 ms−76.7%2run page

Each run's page is linked on the right.

ShowOrder
Region durations

Grouped bars compare each region's mean call duration across the profiled runs.

bar labels
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.

commit0000000
systemsynthetic

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 yaml
from 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])