Skip to content

Profiling the diocotron instability #217

@spossann

Description

@spossann

We want to understand the costs of the different algorithms used in the diocotron example.

The relevant files are here: https://github.com/struphy-hub/struphy/tree/devel/examples/ToyGyrokinetic/diocotron_instability

We have to install Struphy from source in development mode:

git clone git@github.com:struphy-hub/struphy.git
cd struphy
pip install -e .[dev]
struphy compile

To run the diocotron example:

mpirun -n 1 python examples/ToyGyrokinetic/diocotron_instability/params_diocotron.py

For testing we can run just 10-100 time steps.

Turn on profiling with

export LINE_PROFILE=1

and run again. Increase the number of MPI ranks and see what happens to the time per time step.

We can try different algorithms in the propagator model.propagators.push_gc_bxe.options, for instance explicit algos with various Butcher tableaus. Just change the file params_diocotron.py for this.

See some plots with

python examples/ToyGyrokinetic/diocotron_instability/pproc_diocotron.py

Our tasks are:

  • check the strong scaling by increasing the number of MPI ranks, for different pusher algorithms
  • identify bottlenecks via line_profiler

Based on these results, we will try to alleviate some of the bottlenecks.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions