Files
lammps/doc/html/Speed_packages.html
2025-01-13 14:55:48 +00:00

345 lines
21 KiB
HTML

<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>7.4. Accelerator packages &mdash; LAMMPS documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/sphinx-design.min.css" type="text/css" />
<link rel="stylesheet" href="_static/css/lammps.css" type="text/css" />
<link rel="shortcut icon" href="_static/lammps.ico"/>
<link rel="canonical" href="https://docs.lammps.org/Speed_packages.html" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/design-tabs.js?v=f930bc37"></script>
<script async="async" src="_static/mathjax/es5/tex-mml-chtml.js?v=cadf963e"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="7.4.1. GPU package" href="Speed_gpu.html" />
<link rel="prev" title="7.3. General tips" href="Speed_tips.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="Manual.html">
<img src="_static/lammps-logo.png" class="logo" alt="Logo"/>
</a>
<div class="lammps_version">Version: <b>19 Nov 2024</b></div>
<div class="lammps_release">git info: </div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">User Guide</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="Intro.html">1. Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="Install.html">2. Install LAMMPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="Build.html">3. Build LAMMPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="Run_head.html">4. Run LAMMPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="Commands.html">5. Commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="Packages.html">6. Optional packages</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="Speed.html">7. Accelerate performance</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="Speed_bench.html">7.1. Benchmarks</a></li>
<li class="toctree-l2"><a class="reference internal" href="Speed_measure.html">7.2. Measuring performance</a></li>
<li class="toctree-l2"><a class="reference internal" href="Speed_tips.html">7.3. General tips</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">7.4. Accelerator packages</a><ul>
<li class="toctree-l3"><a class="reference internal" href="Speed_gpu.html">7.4.1. GPU package</a></li>
<li class="toctree-l3"><a class="reference internal" href="Speed_intel.html">7.4.2. INTEL package</a></li>
<li class="toctree-l3"><a class="reference internal" href="Speed_kokkos.html">7.4.3. KOKKOS package</a></li>
<li class="toctree-l3"><a class="reference internal" href="Speed_omp.html">7.4.4. OPENMP package</a></li>
<li class="toctree-l3"><a class="reference internal" href="Speed_opt.html">7.4.5. OPT package</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="Speed_compare.html">7.5. Comparison of various accelerator packages</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="Howto.html">8. Howto discussions</a></li>
<li class="toctree-l1"><a class="reference internal" href="Examples.html">9. Example scripts</a></li>
<li class="toctree-l1"><a class="reference internal" href="Tools.html">10. Auxiliary tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="Errors.html">11. Errors</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Programmer Guide</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="Library.html">1. LAMMPS Library Interfaces</a></li>
<li class="toctree-l1"><a class="reference internal" href="Python_head.html">2. Use Python with LAMMPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="Modify.html">3. Modifying &amp; extending LAMMPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="Developer.html">4. Information for Developers</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Command Reference</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="commands_list.html">Commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="fixes.html">Fix Styles</a></li>
<li class="toctree-l1"><a class="reference internal" href="computes.html">Compute Styles</a></li>
<li class="toctree-l1"><a class="reference internal" href="pairs.html">Pair Styles</a></li>
<li class="toctree-l1"><a class="reference internal" href="bonds.html">Bond Styles</a></li>
<li class="toctree-l1"><a class="reference internal" href="angles.html">Angle Styles</a></li>
<li class="toctree-l1"><a class="reference internal" href="dihedrals.html">Dihedral Styles</a></li>
<li class="toctree-l1"><a class="reference internal" href="impropers.html">Improper Styles</a></li>
<li class="toctree-l1"><a class="reference internal" href="dumps.html">Dump Styles</a></li>
<li class="toctree-l1"><a class="reference internal" href="fix_modify_atc_commands.html">fix_modify AtC commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="Bibliography.html">Bibliography</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="Manual.html">LAMMPS</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="Manual.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="Speed.html"><span class="section-number">7. </span>Accelerate performance</a></li>
<li class="breadcrumb-item active"><span class="section-number">7.4. </span>Accelerator packages</li>
<li class="wy-breadcrumbs-aside">
<a href="https://www.lammps.org"><img src="_static/lammps-logo.png" width="64" height="16" alt="LAMMPS Homepage"></a> | <a href="Commands_all.html">Commands</a>
</li>
</ul><div class="rst-breadcrumbs-buttons" role="navigation" aria-label="Sequential page navigation">
<a href="Speed_tips.html" class="btn btn-neutral float-left" title="7.3. General tips" accesskey="p"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="Speed_gpu.html" class="btn btn-neutral float-right" title="7.4.1. GPU package" accesskey="n">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<p><span class="math notranslate nohighlight">\(\renewcommand{\AA}{\text{Å}}\)</span></p>
<section id="accelerator-packages">
<h1><span class="section-number">7.4. </span>Accelerator packages<a class="headerlink" href="#accelerator-packages" title="Link to this heading"></a></h1>
<p>Accelerated versions of various <a class="reference internal" href="pair_style.html"><span class="doc">pair_style</span></a>,
<a class="reference internal" href="fix.html"><span class="doc">fixes</span></a>, <a class="reference internal" href="compute.html"><span class="doc">computes</span></a>, and other commands have
been added to LAMMPS, which will typically run faster than the
standard non-accelerated versions. Some require appropriate hardware
to be present on your system, e.g. GPUs or Intel Xeon Phi
co-processors.</p>
<p>All of these commands are in packages provided with LAMMPS. An
overview of packages is give on the <a class="reference internal" href="Packages.html"><span class="doc">Packages</span></a> doc
pages.</p>
<p>These are the accelerator packages currently in LAMMPS:</p>
<table class="docutils align-default">
<tbody>
<tr class="row-odd"><td><p><a class="reference internal" href="Speed_gpu.html"><span class="doc">GPU Package</span></a></p></td>
<td><p>for GPUs via CUDA, OpenCL, or ROCm HIP</p></td>
</tr>
<tr class="row-even"><td><p><a class="reference internal" href="Speed_intel.html"><span class="doc">INTEL Package</span></a></p></td>
<td><p>for Intel CPUs and Intel Xeon Phi</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference internal" href="Speed_kokkos.html"><span class="doc">KOKKOS Package</span></a></p></td>
<td><p>for NVIDIA GPUs, Intel Xeon Phi, and OpenMP threading</p></td>
</tr>
<tr class="row-even"><td><p><a class="reference internal" href="Speed_omp.html"><span class="doc">OPENMP Package</span></a></p></td>
<td><p>for OpenMP threading and generic CPU optimizations</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference internal" href="Speed_opt.html"><span class="doc">OPT Package</span></a></p></td>
<td><p>generic CPU optimizations</p></td>
</tr>
</tbody>
</table>
<div class="toctree-wrapper compound">
</div>
<p>Inverting this list, LAMMPS currently has acceleration support for
three kinds of hardware, via the listed packages:</p>
<table class="docutils align-default">
<tbody>
<tr class="row-odd"><td><p>Many-core CPUs</p></td>
<td><p><a class="reference internal" href="Speed_intel.html"><span class="doc">INTEL</span></a>, <a class="reference internal" href="Speed_kokkos.html"><span class="doc">KOKKOS</span></a>, <a class="reference internal" href="Speed_omp.html"><span class="doc">OPENMP</span></a>, <a class="reference internal" href="Speed_opt.html"><span class="doc">OPT</span></a> packages</p></td>
</tr>
<tr class="row-even"><td><p>GPUs</p></td>
<td><p><a class="reference internal" href="Speed_gpu.html"><span class="doc">GPU</span></a>, <a class="reference internal" href="Speed_kokkos.html"><span class="doc">KOKKOS</span></a> packages</p></td>
</tr>
<tr class="row-odd"><td><p>Intel Phi/AVX</p></td>
<td><p><a class="reference internal" href="Speed_intel.html"><span class="doc">INTEL</span></a>, <a class="reference internal" href="Speed_kokkos.html"><span class="doc">KOKKOS</span></a> packages</p></td>
</tr>
</tbody>
</table>
<p>Which package is fastest for your hardware may depend on the size
problem you are running and what commands (accelerated and
non-accelerated) are invoked by your input script. While these doc
pages include performance guidelines, there is no substitute for
trying out the different packages appropriate to your hardware.</p>
<p>Any accelerated style has the same name as the corresponding standard
style, except that a suffix is appended. Otherwise, the syntax for
the command that uses the style is identical, their functionality is
the same, and the numerical results it produces should also be the
same, except for precision and round-off effects.</p>
<p>For example, all of these styles are accelerated variants of the
Lennard-Jones <a class="reference internal" href="pair_lj.html"><span class="doc">pair_style lj/cut</span></a>:</p>
<ul class="simple">
<li><p><a class="reference internal" href="pair_lj.html"><span class="doc">pair_style lj/cut/gpu</span></a></p></li>
<li><p><a class="reference internal" href="pair_lj.html"><span class="doc">pair_style lj/cut/intel</span></a></p></li>
<li><p><a class="reference internal" href="pair_lj.html"><span class="doc">pair_style lj/cut/kk</span></a></p></li>
<li><p><a class="reference internal" href="pair_lj.html"><span class="doc">pair_style lj/cut/omp</span></a></p></li>
<li><p><a class="reference internal" href="pair_lj.html"><span class="doc">pair_style lj/cut/opt</span></a></p></li>
</ul>
<p>To see what accelerate styles are currently available for a particular
style, find the style name in the <a class="reference internal" href="Commands_all.html"><span class="doc">Commands</span></a>
style pages (fix,compute,pair,etc) and see what suffixes are listed
(g,i,k,o,t) with it. The doc pages for individual commands
(e.g. <a class="reference internal" href="pair_lj.html"><span class="doc">pair lj/cut</span></a> or <a class="reference internal" href="fix_nve.html"><span class="doc">fix nve</span></a>) also list
any accelerated variants available for that style.</p>
<p>To use an accelerator package in LAMMPS, and one or more of the styles
it provides, follow these general steps. Details vary from package to
package and are explained in the individual accelerator doc pages,
listed above:</p>
<table class="docutils align-default">
<tbody>
<tr class="row-odd"><td><p>build the accelerator library</p></td>
<td><p>only for GPU package</p></td>
</tr>
<tr class="row-even"><td><p>install the accelerator package</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">yes-opt</span></code>, <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">yes-intel</span></code>, etc</p></td>
</tr>
<tr class="row-odd"><td><p>add compile/link flags to <code class="docutils literal notranslate"><span class="pre">Makefile.machine</span></code>
in <code class="docutils literal notranslate"><span class="pre">src/MAKE</span></code></p></td>
<td><p>only for INTEL, KOKKOS, OPENMP,
OPT packages</p></td>
</tr>
<tr class="row-even"><td><p>re-build LAMMPS</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">machine</span></code></p></td>
</tr>
<tr class="row-odd"><td><p>prepare and test a regular LAMMPS simulation</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">lmp_machine</span> <span class="pre">-in</span> <span class="pre">in.script;</span></code>
<code class="docutils literal notranslate"><span class="pre">mpirun</span> <span class="pre">-np</span> <span class="pre">32</span> <span class="pre">lmp_machine</span> <span class="pre">-in</span> <span class="pre">in.script</span></code></p></td>
</tr>
<tr class="row-even"><td><p>enable specific accelerator support via <code class="docutils literal notranslate"><span class="pre">-k</span> <span class="pre">on</span></code>
<a class="reference internal" href="Run_options.html"><span class="doc">command-line switch</span></a></p></td>
<td><p>only needed for KOKKOS package</p></td>
</tr>
<tr class="row-odd"><td><p>set any needed options for the package via <code class="docutils literal notranslate"><span class="pre">-pk</span></code>
<a class="reference internal" href="Run_options.html"><span class="doc">command-line switch</span></a> or
<a class="reference internal" href="package.html"><span class="doc">package</span></a> command</p></td>
<td><p>only if defaults need to be changed</p></td>
</tr>
<tr class="row-even"><td><p>use accelerated styles in your input via <code class="docutils literal notranslate"><span class="pre">-sf</span></code>
<a class="reference internal" href="Run_options.html"><span class="doc">command-line switch</span></a> or
<a class="reference internal" href="suffix.html"><span class="doc">suffix</span></a> command</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">lmp_machine</span> <span class="pre">-in</span> <span class="pre">in.script</span> <span class="pre">-sf</span> <span class="pre">gpu</span></code></p></td>
</tr>
</tbody>
</table>
<p>Note that the first 4 steps can be done as a single command with
suitable make command invocations. This is discussed on the
<a class="reference internal" href="Packages.html"><span class="doc">Packages</span></a> doc pages, and its use is illustrated in the
individual accelerator sections. Typically these steps only need to
be done once, to create an executable that uses one or more
accelerator packages.</p>
<p>The last 4 steps can all be done from the command-line when LAMMPS is
launched, without changing your input script, as illustrated in the
individual accelerator sections. Or you can add
<a class="reference internal" href="package.html"><span class="doc">package</span></a> and <a class="reference internal" href="suffix.html"><span class="doc">suffix</span></a> commands to your input
script.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>With a few exceptions, you can build a single LAMMPS executable
with all its accelerator packages installed. Note however that the
INTEL and KOKKOS packages require you to choose one of their
hardware options when building for a specific platform. I.e. CPU or
Phi option for the INTEL package. Or the OpenMP, CUDA, HIP, SYCL,
or Phi option for the KOKKOS package. Or the OpenCL, HIP, or CUDA
option for the GPU package.</p>
</div>
<p>These are the exceptions. You cannot build a single executable with:</p>
<ul class="simple">
<li><p>both the INTEL Phi and KOKKOS Phi options</p></li>
<li><p>the INTEL Phi or Kokkos Phi option, and the GPU package</p></li>
</ul>
<p>As mentioned above, the <a class="reference external" href="https://www.lammps.org/bench.html">Benchmark page</a> of the LAMMPS website gives
performance results for the various accelerator packages for several
of the standard LAMMPS benchmark problems, as a function of problem
size and number of compute nodes, on different hardware platforms.</p>
<p>Here is a brief summary of what the various packages provide. Details
are in the individual accelerator sections.</p>
<ul class="simple">
<li><p>Styles with a “gpu” suffix are part of the GPU package and can be run
on Intel, NVIDIA, or AMD GPUs. The speed-up on a GPU depends on a
variety of factors, discussed in the accelerator sections.</p></li>
<li><p>Styles with an “intel” suffix are part of the INTEL
package. These styles support vectorized single and mixed precision
calculations, in addition to full double precision. In extreme cases,
this can provide speedups over 3.5x on CPUs. The package also
supports acceleration in “offload” mode to Intel(R) Xeon Phi(TM)
co-processors. This can result in additional speedup over 2x depending
on the hardware configuration.</p></li>
<li><p>Styles with a “kk” suffix are part of the KOKKOS package, and can be
run using OpenMP on multicore CPUs, on an NVIDIA or AMD GPU, or on an
Intel Xeon Phi in “native” mode. The speed-up depends on a variety of
factors, as discussed on the KOKKOS accelerator page.</p></li>
<li><p>Styles with an “omp” suffix are part of the OPENMP package and allow
a pair-style to be run in multi-threaded mode using OpenMP. This can
be useful on nodes with high-core counts when using less MPI processes
than cores is advantageous, e.g. when running with PPPM so that FFTs
are run on fewer MPI processors or when the many MPI tasks would
overload the available bandwidth for communication.</p></li>
<li><p>Styles with an “opt” suffix are part of the OPT package and typically
speed-up the pairwise calculations of your simulation by 5-25% on a
CPU.</p></li>
</ul>
<p>The individual accelerator package doc pages explain:</p>
<ul class="simple">
<li><p>what hardware and software the accelerated package requires</p></li>
<li><p>how to build LAMMPS with the accelerated package</p></li>
<li><p>how to run with the accelerated package either via command-line switches or modifying the input script</p></li>
<li><p>speed-ups to expect</p></li>
<li><p>guidelines for best performance</p></li>
<li><p>restrictions</p></li>
</ul>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="Speed_tips.html" class="btn btn-neutral float-left" title="7.3. General tips" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="Speed_gpu.html" class="btn btn-neutral float-right" title="7.4.1. GPU package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2003-2025 Sandia Corporation.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(false);
});
</script>
</body>
</html>