.. _optimize_performance:

Optimize performance of HPC Systems
===================================

.. toctree::
  :hidden:

  overview_hardware
  slurm_script
  threading
  mpi_processes


If you are new to running NEST on HPC systems or trying to improve the performance or debug issues,
we have provided a few guides to help you out. There are a few things to consider about the
hardware and software of the HPC system you are using for improving the overall
performance.


Although there will be some variation between scripts and HPC systems, in general, we recommend that 

 * resources are fully utilized (e.g., all available cores are used).
 * one thread pinned to one core (no simultaneous multithreading)
 * More than one MPI process is used (for NEST 3)

.. grid:: 1 1 2 2

    .. grid-item-card:: Overview of HPC systems
         :class-title: sd-d-flex-row sd-align-minor-center
         :link: overview_hardware
         :link-type: ref

         Get an overview of common hardware and software components in HPC systems

    .. grid-item-card:: Example SLURM script
         :class-title: sd-d-flex-row sd-align-minor-center
         :link: slurm_script
         :link-type: ref

         See a typical job script, with detailed descriptions of each line.

.. grid:: 1 1 2 2

    .. grid-item-card:: Threading
         :class-title: sd-d-flex-row sd-align-minor-center
         :link: threads
         :link-type: ref

         Learn about threading and useful OpenMP settings

    .. grid-item-card:: MPI processes
         :class-title: sd-d-flex-row sd-align-minor-center
         :link: mpi_process
         :link-type: ref

         Get some tips on MPI processes and OpenMPI


.. seealso::

   See our other guides on 

   * :ref:`parallel_computing`
   * :ref:`benchmark`
