idaholab / moose

Multiphysics Object Oriented Simulation Environment
https://www.mooseframework.org
GNU Lesser General Public License v2.1
1.67k stars 1.03k forks source link

Performance optimization of MOOSE framework #10256

Open roystgnr opened 6 years ago

roystgnr commented 6 years ago

Rationale

MOOSE could be and should be faster. I believe much of the work needed to make that happen can be done entirely at the libMesh level, but there will be cases (where MOOSE itself is being inefficient, or where future libMesh changes provide more efficient ways to do things by using new APIs) where optimization will require changes to MOOSE code as well.

Description

Unless it's too broad, I'd like to make this a catch-all ticket for performance improvements in MOOSE.

Reproducing poor performance reliably, for MOOSE as a whole, is still an open question, currently being addressed in #9265.

At the moment I'm using the PrairieDog test case provided by @jessecarterMOOSE to look at AMR/C inefficiencies, using callgrind as the "last word" as to whether proposed optimizations are really improvements or not, but obviously callgrind results won't scale to larger and/or parallel problems.

Impact

Ideally any changes made in support of this ticket will be entirely backwards-compatible, improving old API implementations or at worst adding new APIs while maintaining support for old ones. If we ever encounter cases where that restriction seems too limiting then such cases probably deserve a separate ticket and discussion.

permcody commented 6 years ago

I'm ok with this ticket for the time being. We may close it after some period of time and several merges. We have other catch-all tickets but it's nice to close them eventually. Of course we can always reference closed tickets!

mangerij commented 6 years ago

Greatest ticket of all time.

Any possibility to have "heavy" tests from apps to benchmark against?

rwcarlsen commented 6 years ago

We could really use one or two larger representative benchmark problems (~1-2 minutes in serial) to help us measure progress (or regress) toward this. Suggestions?

jessecarterMOOSE commented 6 years ago

Yes, please. My App is not very representative of what the MOOSE framework can do. It doesn't even have Multiphysics! (Does that make it an OOSE app?) It's really just for testing mesh refinement.

Also, however "optimization" is done, let's also make sure we're testing at high cpu counts too.