This lesson is in the early stages of development (Alpha version)

Running LAMMPS on HPC systems

This workshop is specifically aimed at running the LAMMPS software on an HPC system. You may be running LAMMPS on either a desktop, laptop or already on an HPC system, however ineffective use of LAMMPS can lead to running jobs for (far) longer than necessary. Configuring LAMMPS to use an HPC system effectively can speed up your LAMMPS simulations significantly and vastly improve it’s performance. We aim to cover how to do this in this workshop.

Some questions that you may ask yourself are;

If you have asked the any of above questions, then you might be a good candidate for taking this course.

An HPC system is a complex computing platform that usually has several hardware components. Terms that might be familiar are CPU, RAM and GPU since you can find these in your own laptop or server. There are other commonly used terms such as “shared memory”, “distributed computing”, “accelerator”, “interconnect” and “high performance storage” that may be a little less familiar. In this course we will try to cover the subset of these that are relevant to your use case with LAMMPS.

On any HPC system with a variety of hardware components, software performance will vary depending on what components it is using, and how optimized the code is for those components. There are usually no such complications on a standard desktop or laptop, running on an HPC is very, very different.

Note

  • This is the draft HPC Carpentry release. Comments and feedback are welcome.

Prerequisites

Schedule

Setup Download files required for the lesson
00:00 1. Why bother with performance? What is software performance?
Why is software performance important?
How can performance be measured?
What is meant by flops, walltime and CPU hours?
How can performance be enhanced?
How can I use compute resources effectively?
00:15 2. Connecting performance to hardware How can I use the hardware I have access to?
What is the difference between OpenMP and MPI?
How can I use GPUs and/or multiple nodes?
00:35 3. Benchmarking and Scaling What is benchmarking?
How do I do a benchmark?
What is scaling?
How do I perform a scaling analysis?
01:05 4. Bottlenecks in LAMMPS How can I identify the main bottlenecks in LAMMPS?
How do I come up with a strategy for finding the best optimisation?
What is load balancing?
02:30 5. Accelerating LAMMPS What are the various options to accelerate LAMMPS?
What accelerator packages are compatible with which hardware?
How do I invoke a package in a LAMMPS run?
04:30 6. Invoking KOKKOS Why should I use KOKKOS?
How do I invoke KOKKOS within LAMMPS?
05:00 7. KOKKOS with OpenMP How do I utilise KOKKOS with OpenMP
05:45 8. KOKKOS with GPUs How do I use KOKKOS together with a GPU?
06:15 9. Limitations and Rules of Thumb What are the limitations of KOKKOS and other accelerator packages?
How can I be sure that LAMMPS is working efficiently
06:25 Finish

The actual schedule may vary slightly depending on the topics and exercises chosen by the instructor.