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

236 lines
14 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>1.5. LAMMPS portability and compatibility &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/Intro_portability.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="1.6. LAMMPS open-source license" href="Intro_opensource.html" />
<link rel="prev" title="1.4. LAMMPS non-features" href="Intro_nonfeatures.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 current"><a class="reference internal" href="Intro.html">1. Introduction</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="Intro_overview.html">1.1. Overview of LAMMPS</a></li>
<li class="toctree-l2"><a class="reference internal" href="Manual_version.html">1.2. What does a LAMMPS version mean</a></li>
<li class="toctree-l2"><a class="reference internal" href="Intro_features.html">1.3. LAMMPS features</a></li>
<li class="toctree-l2"><a class="reference internal" href="Intro_nonfeatures.html">1.4. LAMMPS non-features</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">1.5. LAMMPS portability and compatibility</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#programming-language-standards">1.5.1. Programming language standards</a></li>
<li class="toctree-l3"><a class="reference internal" href="#build-systems">1.5.2. Build systems</a></li>
<li class="toctree-l3"><a class="reference internal" href="#operating-systems">1.5.3. Operating systems</a></li>
<li class="toctree-l3"><a class="reference internal" href="#compilers">1.5.4. Compilers</a></li>
<li class="toctree-l3"><a class="reference internal" href="#cpu-architectures">1.5.5. CPU architectures</a></li>
<li class="toctree-l3"><a class="reference internal" href="#portability-compliance">1.5.6. Portability compliance</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="Intro_opensource.html">1.6. LAMMPS open-source license</a></li>
<li class="toctree-l2"><a class="reference internal" href="Intro_authors.html">1.7. Authors of LAMMPS</a></li>
<li class="toctree-l2"><a class="reference internal" href="Intro_citing.html">1.8. Citing LAMMPS</a></li>
<li class="toctree-l2"><a class="reference internal" href="Intro_website.html">1.9. Additional website links</a></li>
</ul>
</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"><a class="reference internal" href="Speed.html">7. Accelerate performance</a></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="Intro.html"><span class="section-number">1. </span>Introduction</a></li>
<li class="breadcrumb-item active"><span class="section-number">1.5. </span>LAMMPS portability and compatibility</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="Intro_nonfeatures.html" class="btn btn-neutral float-left" title="1.4. LAMMPS non-features" accesskey="p"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="Intro_opensource.html" class="btn btn-neutral float-right" title="1.6. LAMMPS open-source license" 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="lammps-portability-and-compatibility">
<h1><span class="section-number">1.5. </span>LAMMPS portability and compatibility<a class="headerlink" href="#lammps-portability-and-compatibility" title="Link to this heading"></a></h1>
<p>The primary form of distributing LAMMPS is through highly portable
source code. But also several ways of obtaining LAMMPS as <a class="reference internal" href="Install.html"><span class="doc">precompiled
packages or through automated build mechanisms</span></a> exist. Most
of LAMMPS is written in C++, some support tools are written in Fortran
or Python or MATLAB.</p>
<section id="programming-language-standards">
<h2><span class="section-number">1.5.1. </span>Programming language standards<a class="headerlink" href="#programming-language-standards" title="Link to this heading"></a></h2>
<p>Most of the C++ code currently requires a compiler compatible with the
C++11 standard, the KOKKOS package currently requires C++17. Most of
the Python code is written to be compatible with Python 3.5 or later or
Python 2.7. Some Python scripts <em>require</em> Python 3 and a few others
still need to be ported from Python 2 to Python 3.</p>
</section>
<section id="build-systems">
<h2><span class="section-number">1.5.2. </span>Build systems<a class="headerlink" href="#build-systems" title="Link to this heading"></a></h2>
<p>LAMMPS can be compiled from source code using a (traditional) build
system based on shell scripts, a few shell utilities (grep, sed, cat,
tr) and the GNU make program. This requires running within a Bourne
shell (<code class="docutils literal notranslate"><span class="pre">/bin/sh</span></code>). Alternatively, a build system with different back ends
can be created using CMake. CMake must be at least version 3.16.</p>
</section>
<section id="operating-systems">
<h2><span class="section-number">1.5.3. </span>Operating systems<a class="headerlink" href="#operating-systems" title="Link to this heading"></a></h2>
<p>The primary development platform for LAMMPS is Linux. Thus, the chances
for LAMMPS to compile without problems are the best on Linux machines.
Also, compilation and correct execution on macOS and Windows (using
Microsoft Visual C++) is checked automatically for the largest part of
the source code. Some (optional) features are not compatible with all
operating systems, either through limitations of the corresponding
LAMMPS source code or through incompatibilities of source code or
build system of required external libraries or packages.</p>
<p>Executables for Windows may be created natively using either Cygwin or
Visual Studio or with a Linux to Windows MinGW cross-compiler.</p>
<p>Additionally, FreeBSD and Solaris have been tested successfully to
run LAMMPS and produce results consistent with those on Linux.</p>
</section>
<section id="compilers">
<h2><span class="section-number">1.5.4. </span>Compilers<a class="headerlink" href="#compilers" title="Link to this heading"></a></h2>
<p>The most commonly used compilers are the GNU compilers, but also Clang
and the Intel compilers have been successfully used on Linux, macOS, and
Windows. Also, the Nvidia HPC SDK (formerly PGI compilers) will compile
LAMMPS (tested on Linux).</p>
</section>
<section id="cpu-architectures">
<h2><span class="section-number">1.5.5. </span>CPU architectures<a class="headerlink" href="#cpu-architectures" title="Link to this heading"></a></h2>
<p>The primary CPU architecture for running LAMMPS is 64-bit x86, but also
32-bit x86, and 64-bit ARM and PowerPC (64-bit, Little Endian) are
regularly tested.</p>
</section>
<section id="portability-compliance">
<h2><span class="section-number">1.5.6. </span>Portability compliance<a class="headerlink" href="#portability-compliance" title="Link to this heading"></a></h2>
<p>Only a subset of the LAMMPS source code is <em>fully</em> compliant to <em>all</em>
of the above mentioned standards. This is rather typical for projects
like LAMMPS that largely depend on contributions from the user community.
Not all contributors are trained as programmers and not all of them have
access to multiple platforms for testing. As part of the continuous
integration process, however, all contributions are automatically tested
to compile, link, and pass some runtime tests on a selection of Linux
flavors, macOS, and Windows, and on Linux with different compilers.
Thus portability issues are often found before a pull request is merged.
Other platforms may be checked occasionally or when portability bugs are
reported.</p>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="Intro_nonfeatures.html" class="btn btn-neutral float-left" title="1.4. LAMMPS non-features" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="Intro_opensource.html" class="btn btn-neutral float-right" title="1.6. LAMMPS open-source license" 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>