MESQUITE: Mesh Optimization Toolkit

Download Report

Transcript MESQUITE: Mesh Optimization Toolkit

MESQUITE: Mesh Optimization Toolkit

Brian Miller, LLNL [email protected]

A) Project Overview

• Science goal: Algorithms for improving unstructured mesh quality, achieved through optimization techniques.

– Provide library of high quality mesh optimization tools to simulation code projects (Mesquite).

• Pat Knupp (SNL) project PI – Brian Miller, Lori Diachin (LLNL) – Carl Ollivier-Gooch (UBC) • Long history of support through DoE Office of Science – Several successful collaborations with both SciDAC and ASC code groups.

• Goals in CScADS context: Apply threaded parallelism to Mesquite optimization solvers.

– Evolve algorithms and software to take advantage of current and emerging hardware and software capabilities (multicore, many core, etc.)

B) Science Lesson

• MESQUITE poses unstructured mesh quality improvement as an optimization problem.

– Element Quality: • Ideal element as defined by the user drives this.

– Mesh quality objective function: • How local element qualities are summed into the global objective function. Again, user defined.

– Optimization problem: min(F(x)) • Optimization problems solved using included solvers ranging from simple steepest descent to more sophisticated Feasible Newton and Active Set solvers. Again user chooses solver method.

C/D) Methods and Programming Model

• Pretty basic C++ .

• No third party libraries except for unit testing (cppunit).

• MPI parallelism, mostly low volume nearest neighbor communication.

• No threaded parallelism currently – we intend to change this.

• Fairly portable code including recent runs on LLNL dawn BG/P machine.

• Optimization solvers included in the code, no interface to external optimization libraries.

• Designed to meet TSTTM mesh query interface and have demonstrated its use in several code interfaces.

E) I/O and Viz

I/O: – Not really applicable since Mesquite is intended for use within an existing code framework.

– For standalone use and testing we typically read/write one file per MPI task.

Viz: – Visit or paraview for viewing parallel mesh files.

– Optional Gnuplot output of convergence histories.

Analysis: – Internal mechanism for mesh quality calculations.

G/H) Tools and Performance

What tools do you use? – TAU/OpenSpeedShop/Intel tools for performance analysis and thread checks.

– Totalview, valgrind for debugging.

– Some internal debugging output available.

What do you believe is your current bottleneck to better

performance?

– Serial performance is sub-optimal. A route is needed from the generic algorithms provided in Mesquite to tight, high performance loops.

What do you believe is your current bottleneck to better

scaling?

– Scaling hasn’t been a problem (yet.) • What features would you like to see in performance tools? – Better derived hardware metrics/more sophisticated analysis.

I) Status and Scalability

Goal in one year: Similar graph but with threads added.

Top Pains: – Must add threading to existing code – not enough resources to rewrite.

– Require portable threading model.

– How to inherit simulation threading model.

J) Roadmap

Where will your science take you over the next 2 years? – Desire to support runs on significantly larger systems (Sequoia) • What do you hope to learn / discover? – Extent of MPI scalability.

– Effect of adding threading on MPI scalability.

What improvements will you need to make? – New threaded global solver algorithms.

– Gradual evolution to threaded implementation.

What are your plans? – OpenMP threading in limited regions of the code – specific algorithms with good available parallelism initially.

– Extending threads to other areas may require algorithmic changes.

– Explore other threading models: OpenCL, OpenACC, CUDA, etc.