Merge branch 'origin/release-2020' into merge-release-2020-into-master
[alexxy/gromacs.git] / docs / release-notes / 2021 / major / portability.rst
1 Portability
2 ^^^^^^^^^^^
3
4 Python environment
5 """"""""""""""""""
6
7 Where Python is required,
8 `CPython <https://www.python.org>`__ versions 3.6 to 3.8 are supported.
9
10 CMake now detects Python using
11 `FindPython3 <https://cmake.org/cmake/help/v3.13/module/FindPython3.html>`__.
12 If you previously used ``PYTHON_EXECUTABLE`` to hint the location of the Python
13 interpreter, you should instead specify the Python "root" or "prefix" path
14 (the directory containing ``./bin/python3``) with CMake variable
15 ``Python3_ROOT`` or ``CMAKE_PREFIX_PATH``. As other infrastructure evolves,
16 ``PYTHON_EXECUTABLE`` may cease to have the desired effect without warning.
17
18 .. Note to developers!
19    Please use """"""" to underline the individual entries for fixed issues in the subfolders,
20    otherwise the formatting on the webpage is messed up.
21    Also, please use the syntax :issue:`number` to reference issues on GitLab, without the
22    a space between the colon and number!
23
24 CMake
25 """""
26
27 Updated required CMake version to 3.13.
28
29 C++ standard
30 """"""""""""
31
32 |Gromacs| has updated the required C++ standards compliance from C++14 to C++17,
33 and requires 2017 standard library features. See the install guide for details.
34
35 Cygwin
36 """"""
37
38 |Gromacs| now builds on Cygwin with both gcc and clang compilers.
39
40 Windows
41 """""""
42
43 |Gromacs| now builds correctly on Windows with MSVC even when the path
44 to the source or build directory has a space in it.
45
46 RDTSCP usage and reporting
47 """"""""""""""""""""""""""
48
49 |Gromacs| now defaults always on x86 to use the RDTSCP machine
50 instruction for lower latency timing. Very old machines might need to
51 configure with ``GMX_USE_RDTSCP=off``. Non-x86 platforms are
52 unaffected, except that they will no longer report that RDTSCP is
53 disabled (because that is self-evident).
54
55 Bundle muparser
56 """""""""""""""
57
58 |Gromacs| now bundles MuParser version 2.3. It is also possible
59 to link to an external provided library.
60
61 armv8+sve support (ARM_SVE)
62 """""""""""""""""""""""""""
63 Support for ARM Scalable Vector Extensions (SVE) has been added.
64 |Gromacs| supports SVE vector length fixed at CMake configure time
65 (typically via the -msve-vector-bits=<len> compiler option),
66 which is at the time of the release supported in GNU GCC 10 and later,
67 and will supported soon by LLVM 12 and compilers based on this.
68 The default vector length is 512 bits, and that can be changed at
69 CMake configure time with ``GMX_SIMD_ARM_SVE_LENGTH=<bits>`` option.
70 Supported values are 128, 256, 512 and 1024. Note that the nonbonded
71 kernels have not been optimized for ARM_SVE as of yet.
72 ARM_SVE support is contributed by the Research Organization for Science Information and Technology (RIST)