...
 
Commits (4)
......@@ -217,7 +217,9 @@ endif()
set(REQUIRED_CUDA_COMPUTE_CAPABILITY 3.0)
# OpenCL required version: 1.2 or newer
set(REQUIRED_OPENCL_MIN_VERSION 1.2)
set(REQUIRED_OPENCL_MIN_VERSION_MAJOR 1)
set(REQUIRED_OPENCL_MIN_VERSION_MINOR 2)
set(REQUIRED_OPENCL_MIN_VERSION ${REQUIRED_OPENCL_MIN_VERSION_MAJOR}.${REQUIRED_OPENCL_MIN_VERSION_MINOR})
if(NOT GMX_USE_OPENCL)
# CUDA detection is done only if GMX_USE_OPENCL is OFF.
......
......@@ -5,8 +5,8 @@ Installation guide
Introduction to building GROMACS
================================
These instructions pertain to building GROMACS 2019-beta2. You might
also want to check the up-to-date installation instructions.
These instructions pertain to building GROMACS 2019.1. You might also
want to check the up-to-date installation instructions.
Quick and dirty installation
......@@ -28,8 +28,8 @@ Quick and dirty installation
Or, as a sequence of commands to execute:
tar xfz gromacs-2019-beta2.tar.gz
cd gromacs-2019-beta2
tar xfz gromacs-2019.1.tar.gz
cd gromacs-2019.1
mkdir build
cd build
cmake .. -DGMX_BUILD_OWN_FFTW=ON -DREGRESSIONTEST_DOWNLOAD=ON
......@@ -107,19 +107,6 @@ of "xxx" :
* "-DCMAKE_BUILD_TYPE=Debug" to build GROMACS in debug mode
Building with MiMiC QM/MM support
---------------------------------
MiMiC QM/MM interface integration will require linking against MiMiC
communication library, that establishes the communication channel
between GROMACS and CPMD. Check that the installation folder of the
library is added to CMAKE_PREFIX_PATH if it is installed in non-
standard location. Building QM/MM-capable version requires double-
precision version of GROMACS compiled with MPI support:
* "-DGMX_DOUBLE=ON -DGMX_MPI -DGMX_MIMIC=ON"
Building older versions
-----------------------
......@@ -165,8 +152,8 @@ Other compilers may work (Cray, Pathscale, older clang) but do not
offer competitive performance. We recommend against PGI because the
performance with C++ is very bad.
The xlc compiler is not supported and has not been tested on POWER
architectures for GROMACS-2019-beta2. We recommend to use the gcc
The xlc compiler is not supported and version 16.1 does not compile on
POWER architectures for GROMACS-2019.1. We recommend to use the gcc
compiler instead, as it is being extensively tested.
You may also need the most recent version of other compiler toolchain
......@@ -244,16 +231,18 @@ code on the CPU. It is most reliable to use the same C++ compiler
version for GROMACS code as used as the host compiler for nvcc.
To make it possible to use other accelerators, GROMACS also includes
OpenCL support. The minimum OpenCL version required is 1.2. The
current OpenCL implementation is recommended for use with GCN-based
AMD GPUs, and on Linux we recommend the ROCm runtime. Intel integrated
GPUs are supported with the Neo drivers. OpenCL is also supported with
NVIDIA GPUs, but using the latest NVIDIA driver (which includes the
NVIDIA OpenCL runtime) is recommended. Also note that there are
performance limitations (inherent to the NVIDIA OpenCL runtime). It is
not possible to configure both CUDA and OpenCL support in the same
build of GROMACS, nor to support both Intel and other vendors’ GPUs
with OpenCL.
OpenCL support. The minimum OpenCL version required is 1.2 and only
64-bit implementations are supported. The current OpenCL
implementation is recommended for use with GCN-based AMD GPUs, and on
Linux we recommend the ROCm runtime. Intel integrated GPUs are
supported with the Neo drivers. OpenCL is also supported with NVIDIA
GPUs, but using the latest NVIDIA driver (which includes the NVIDIA
OpenCL runtime) is recommended. Also note that there are performance
limitations (inherent to the NVIDIA OpenCL runtime). It is not
possible to configure both CUDA and OpenCL support in the same build
of GROMACS, nor to support both Intel and other vendors’ GPUs with
OpenCL. A 64-bit implementation of OpenCL is required and therefore
OpenCL is only supported on 64-bit platforms.
MPI support
......@@ -364,6 +353,22 @@ The full list and order(!) of libraries you require are found in
Intel’s MKL documentation for your system.
Using ARM Performance Libraries
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The ARM Performance Libraries provides FFT transforms implementation
for ARM architectures. Preliminary support is provided for ARMPL in
GROMACS through its FFTW-compatible API. Assuming that the ARM HPC
toolchain environment including the ARMPL paths are set up (e.g.
through loading the appropriate modules like "module load Module-
Prefix/arm-hpc-compiler-X.Y/armpl/X.Y") use the following cmake
options:
cmake -DGMX_FFT_LIBRARY=fftw3 \
-DFFTWF_LIBRARY="${ARMPL_DIR}/lib/libarmpl_lp64.so" \
-DFFTWF_INCLUDE_DIR=${ARMPL_DIR}/include
Other optional build components
-------------------------------
......@@ -434,8 +439,8 @@ the name of the directory containing the "CMakeLists.txt" file of the
code you want to build. For example, download the source tarball and
use
tar xfz gromacs-2019-beta2.tgz
cd gromacs-2019-beta2
tar xfz gromacs-2019.1.tgz
cd gromacs-2019.1
mkdir build-gromacs
cd build-gromacs
cmake ..
......@@ -594,7 +599,7 @@ to performance loss, e.g. on Intel Skylake-X/SP and AMD Zen.
11. "IBM_VMX" Power6 and similar Altivec processors have this.
12. "IBM_VSX" Power7, Power8 and later have this.
12. "IBM_VSX" Power7, Power8, Power9 and later have this.
13. "ARM_NEON" 32-bit ARMv7 with NEON support.
......@@ -799,7 +804,7 @@ gmxapi external API
For dynamic linking builds and on non-Windows platforms, an extra
library and headers are installed by setting "-DGMXAPI=ON" (default).
Build targets "gmxapi_cppdocs" and "gmxapi_cppdocs_dev" produce
Build targets "gmxapi-cppdocs" and "gmxapi-cppdocs-dev" produce
documentation in "docs/api-user" and "docs/api-dev", respectively. For
more project information and use cases, refer to the tracked Issue
2585, associated GitHub gmxapi projects, or DOI
......@@ -856,8 +861,9 @@ otherwise fall back on a version of BLAS internal to GROMACS. The
internal versions are fine for normal use. If you need to specify a
non-standard path to search, use
"-DCMAKE_PREFIX_PATH=/path/to/search". If you need to specify a
library with a non-standard name (e.g. ESSL on Power machines), then
set "-DGMX_BLAS_USER=/path/to/reach/lib/libwhatever.a".
library with a non-standard name (e.g. ESSL on Power machines or ARMPL
on ARM machines), then set
"-DGMX_BLAS_USER=/path/to/reach/lib/libwhatever.a".
If you are using Intel MKL for FFT, then the BLAS and LAPACK it
provides are used automatically. This could be over-ridden with
......@@ -868,6 +874,21 @@ will be automatically used for BLAS and LAPACK. This could be over-
ridden with "GMX_BLAS_USER", etc.
Building with MiMiC QM/MM support
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
MiMiC QM/MM interface integration will require linking against MiMiC
communication library, that establishes the communication channel
between GROMACS and CPMD. The MiMiC Communication library can be
downloaded here. Compile and install it. Check that the installation
folder of the MiMiC library is added to CMAKE_PREFIX_PATH if it is
installed in non-standard location. Building QM/MM-capable version
requires double-precision version of GROMACS compiled with MPI
support:
* "-DGMX_DOUBLE=ON -DGMX_MPI -DGMX_MIMIC=ON"
Changing the names of GROMACS binaries and libraries
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
......@@ -1022,7 +1043,7 @@ The simplest way to run the checks is to build GROMACS with
"-DREGRESSIONTEST_DOWNLOAD", and run "make check". GROMACS will
automatically download and run the tests for you. Alternatively, you
can download and unpack the GROMACS regression test suite
http://gerrit.gromacs.org/download/regressiontests-2019-beta2.tar.gz
http://gerrit.gromacs.org/download/regressiontests-2019.1.tar.gz
tarball yourself and use the advanced "cmake" option
"REGRESSIONTEST_PATH" to specify the path to the unpacked tarball,
which will then be used for testing. If the above does not work, then
......
#
# This file is part of the GROMACS molecular simulation package.
#
# Copyright (c) 2015,2016,2017, by the GROMACS development team, led by
# Copyright (c) 2015,2016,2017,2019, by the GROMACS development team, led by
# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
# and including many others, as listed in the AUTHORS file in the
# top-level source directory and at http://www.gromacs.org.
......@@ -34,7 +34,7 @@
import os.path
build_options = ['gcc-6', 'gcov-6']
build_options = ['gcc-7', 'gcov-7']
extra_projects = [Project.REGRESSIONTESTS]
def do_build(context):
......
#
# This file is part of the GROMACS molecular simulation package.
#
# Copyright (c) 2015,2016,2017,2018, by the GROMACS development team, led by
# Copyright (c) 2015,2016,2017,2018,2019, by the GROMACS development team, led by
# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
# and including many others, as listed in the AUTHORS file in the
# top-level source directory and at http://www.gromacs.org.
......@@ -35,6 +35,7 @@
import os
import re
build_options = ['doxygen-1.8.5']
build_out_of_source = True
extra_options = {
......@@ -57,9 +58,8 @@ def do_build(context):
cmake_opts['GMX_BUILD_TARBALL'] = 'ON'
elif context.job_type == JobType.GERRIT:
cmake_opts['GMX_COMPACT_DOXYGEN'] = 'ON'
cmake_opts.update(context.get_doc_cmake_options(
doxygen_version='1.8.5', sphinx_version='1.6.1'))
context.run_cmake(cmake_opts);
cmake_opts['DOXYGEN_EXECUTABLE'] = context.env.doxygen_command
context.run_cmake(cmake_opts)
# we keep the individual build targets here to ensure some
# granularity of the resulting error messages (if any).
......
......@@ -47,6 +47,7 @@ extra_options = {
'tng' : Option.bool,
'mkl': Option.simple,
'fftpack': Option.simple,
'buildfftw': Option.simple,
'double': Option.simple,
'thread-mpi': Option.bool,
'clang_cuda': Option.bool,
......@@ -67,6 +68,9 @@ def do_build(context):
cmake_opts['CMAKE_BUILD_TYPE'] = 'Debug'
cmake_opts['GMX_USE_RDTSCP'] = 'DETECT'
if not context.opts.msvc and not context.opts.mdrun_only and not context.opts.static:
cmake_opts['GMXAPI'] = 'ON'
if context.opts.reference:
cmake_opts['CMAKE_BUILD_TYPE'] = 'Reference'
elif context.opts['release']:
......@@ -119,13 +123,23 @@ def do_build(context):
cmake_opts['GMX_FFT_LIBRARY'] = 'mkl'
elif context.opts.fftpack:
cmake_opts['GMX_FFT_LIBRARY'] = 'fftpack'
if context.opts.mkl or context.opts.atlas:
elif context.opts.buildfftw:
cmake_opts['GMX_BUILD_OWN_FFTW'] = 'ON'
cmake_opts['GMX_BUILD_OWN_FFTW_URL'] = 'ftp://ftp.gromacs.org/misc/fftw-3.3.8.tar.gz'
cmake_opts['GMX_BUILD_OWN_FFTW_MD5'] = '8aac833c943d8e90d51b697b27d4384d'
if context.opts.mkl or context.opts.atlas or context.opts.armpl:
cmake_opts['GMX_EXTERNAL_BLAS'] = 'ON'
cmake_opts['GMX_EXTERNAL_LAPACK'] = 'ON'
if context.opts.clFFT:
cmake_opts['GMX_EXTERNAL_CLFFT'] = 'ON'
cmake_opts['clFFT_ROOT'] = context.env.clFFT_root
if context.opts.armpl:
cmake_opts['FFTWF_LIBRARY'] = os.path.join(context.env.armpl_dir, 'lib/libarmpl_lp64.so')
cmake_opts['FFTWF_INCLUDE_DIR'] = os.path.join(context.env.armpl_dir, 'include')
cmake_opts['GMX_BLAS_USER'] = os.path.join(context.env.armpl_dir, 'lib/libarmpl_lp64.so')
cmake_opts['GMX_LAPACK_USER'] = os.path.join(context.env.armpl_dir, 'lib/libarmpl_lp64.so')
if context.opts.hwloc is False:
cmake_opts['GMX_HWLOC'] = 'OFF'
......
......@@ -11,7 +11,7 @@
# Test on ARM v7
# Test ARM_NEON SIMD
gcc-5 simd=ARM_NEON release-with-assert
gcc-5 simd=ARM_NEON no-hwloc release-with-assert
# Test on ARM v8
# Test ARM_NEON_ASIMD SIMD
......@@ -67,7 +67,9 @@ icc-18 msvc-2017 fftpack simd=avx2_256 release
#gcc-7 armhpc-18.2 openmp simd=ARM_NEON_ASIMD release
# Test ARM HPC compier toolchain with armclang
#armclang-18.2 armhpc-18.2 openmp simd=ARM_NEON_ASIMD release-with-assert
# Test ARMPL for FFTs
# Test linking against ARMPL for BLAS/LAPACK
armclang-18.4 armhpc-18.4 armpl openmp simd=ARM_NEON_ASIMD release-with-assert
# TODO
# Add SIMD + OpenMP + CUDA asan build
......
......@@ -83,7 +83,7 @@ gcc-6 openmp gpuhw=nvidia opencl-1.2 clFFT-2.14 mpi simd=avx2_256
# Test external clFFT (for build speed)
# Test AVX_128_FMA SIMD
# Test newest gcc at time of release
gcc-8 openmp simd=avx2_256 gpuhw=amd opencl-1.2 clFFT-2.14
gcc-8 openmp simd=avx2_256 gpuhw=amd opencl-1.2 clFFT-2.14 buildfftw
# TODO
# Add OpenMP support to ASAN build (but libomp.so in clang-4 reports leaks, so might need a suitable build or suppression)
......
#
# This file is part of the GROMACS molecular simulation package.
#
# Copyright (c) 2015,2016,2017, by the GROMACS development team, led by
# Copyright (c) 2015,2016,2017,2018, by the GROMACS development team, led by
# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
# and including many others, as listed in the AUTHORS file in the
# top-level source directory and at http://www.gromacs.org.
......@@ -85,6 +85,7 @@ if(HWLOC_INCLUDE_DIRS)
# If we are not cross-compiling we try to use the hwloc-info program
if(NOT CMAKE_CROSSCOMPILING)
find_program(HWLOC_INFO "hwloc-info")
mark_as_advanced(HWLOC_INFO)
if(HWLOC_INFO)
execute_process(COMMAND ${HWLOC_INFO} "--version"
......
......@@ -50,8 +50,19 @@ if (SPHINX_EXECUTABLE AND NOT DEFINED SPHINX_EXECUTABLE_VERSION)
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE
)
string(REGEX REPLACE ".*build[ )]*" "" SPHINX_EXECUTABLE_VERSION "${SPHINX_VERSION_OUTPUT_VARIABLE}")
set(SPHINX_EXECUTABLE_VERSION "${SPHINX_EXECUTABLE_VERSION}" CACHE INTERNAL "Version of ${SPHINX_EXECUTABLE}")
# Detect the sphinx version. First try to match the error message
# from old versions that didn't even support --version, then try
# to detect more modern sphinx versions. If nothing is found, then
# the cache variable is set to an empty value.
set(_version "")
if(SPHINX_VERSION_OUTPUT_VARIABLE MATCHES "Sphinx v([0-9\.]+)\n.*")
set(_version ${CMAKE_MATCH_1})
elseif (SPHINX_VERSION_OUTPUT_VARIABLE MATCHES ".*build[ )]*(.*)")
set(_version ${CMAKE_MATCH_1})
endif()
set(SPHINX_EXECUTABLE_VERSION ${_version} CACHE INTERNAL "Version of ${SPHINX_EXECUTABLE}")
endif()
set(_find_deps_options)
......
#
# This file is part of the GROMACS molecular simulation package.
#
# Copyright (c) 2009,2010,2011,2012,2013,2014,2015,2016,2017,2018, by the GROMACS development team, led by
# Copyright (c) 2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019, by the GROMACS development team, led by
# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
# and including many others, as listed in the AUTHORS file in the
# top-level source directory and at http://www.gromacs.org.
......@@ -118,7 +118,6 @@ macro (gmx_c_flags)
GMX_TEST_CFLAG(CFLAGS_WARN_SUBSCRIPT "-Wno-char-subscripts" GMXC_CFLAGS)
endif()
GMX_TEST_CFLAG(CFLAGS_STRINGOP_TRUNCATION "-Werror=stringop-truncation" GMXC_CFLAGS)
GMX_TEST_CFLAG(CFLAGS_FORMAT_OVERFLOW "-Werror=format-overflow" GMXC_CFLAGS)
endif()
# new in gcc 4.5
GMX_TEST_CFLAG(CFLAGS_EXCESS_PREC "-fexcess-precision=fast" GMXC_CFLAGS_RELEASE)
......@@ -146,7 +145,6 @@ macro (gmx_c_flags)
if (CXXFLAGS_STRINGOP_TRUNCATION)
set(CXXFLAGS_NO_STRINGOP_TRUNCATION "-Wno-stringop-truncation")
endif()
GMX_TEST_CXXFLAG(CXXFLAGS_FORMAT_OVERFLOW "-Wformat-overflow" GMXC_CXXFLAGS)
endif()
# new in gcc 4.5
GMX_TEST_CXXFLAG(CXXFLAGS_EXCESS_PREC "-fexcess-precision=fast" GMXC_CXXFLAGS_RELEASE)
......@@ -191,8 +189,9 @@ macro (gmx_c_flags)
endif()
if (GMX_COMPILER_WARNINGS)
#only on Windows
#161: unrecognized pragma
#1786 function was declared deprecated (is issued for stdlib function such as strncpy which have a _s version)
GMX_TEST_CFLAG(CFLAGS_WARN "/W3 /wd177 /wd411 /wd593 /wd981 /wd1418 /wd1419 /wd1572 /wd1599 /wd1786 /wd2259 /wd2415 /wd2547 /wd2557 /wd3280" GMXC_CFLAGS)
GMX_TEST_CFLAG(CFLAGS_WARN "/W3 /wd161 /wd177 /wd411 /wd593 /wd981 /wd1418 /wd1419 /wd1572 /wd1599 /wd1786 /wd2259 /wd2415 /wd2547 /wd2557 /wd3280" GMXC_CFLAGS)
endif()
GMX_TEST_CFLAG(CFLAGS_OPT "/Qip" GMXC_CFLAGS_RELEASE)
endif()
......@@ -229,8 +228,9 @@ GMX_TEST_CFLAG(CFLAGS_WARN "/W3 /wd177 /wd411 /wd593 /wd981 /wd1418 /wd1419 /wd1
GMX_TEST_CXXFLAG(CXXFLAGS_PRAGMA "/wd3180" GMXC_CFLAGS)
endif()
if (GMX_COMPILER_WARNINGS)
#161: unrecognized pragma
#809: exception specification for virtual function X is incompatible with that of overridden function
GMX_TEST_CXXFLAG(CXXFLAGS_WARN "/W3 /wd177 /wd304 /wd383 /wd411 /wd444 /wd809 /wd869 /wd981 /wd1418 /wd1572 /wd1599 /wd1786 /wd2259 /wd2547 /wd3280 /wd11074 /wd11076 /wd2282" GMXC_CXXFLAGS)
GMX_TEST_CXXFLAG(CXXFLAGS_WARN "/W3 /wd161 /wd177 /wd304 /wd383 /wd411 /wd444 /wd809 /wd869 /wd981 /wd1418 /wd1572 /wd1599 /wd1786 /wd2259 /wd2547 /wd3280 /wd11074 /wd11076 /wd2282" GMXC_CXXFLAGS)
endif()
GMX_TEST_CXXFLAG(CXXFLAGS_OPT "/Qip" GMXC_CXXFLAGS_RELEASE)
endif()
......@@ -301,11 +301,12 @@ GMX_TEST_CFLAG(CFLAGS_WARN "/W3 /wd177 /wd411 /wd593 /wd981 /wd1418 /wd1419 /wd1
# unreferenced local variable (only C)
# conversion from 'size_t' to 'int', possible loss of data
# conversion from 'const char*' to 'void*', different 'const' qualifiers (only C)
# unknown pragma (4068)
if(NOT CMAKE_CONFIGURATION_TYPES)
GMX_TEST_CFLAG(CFLAGS_WARN "/wd4800 /wd4355 /wd4996 /wd4305 /wd4244 /wd4101 /wd4267 /wd4090" GMXC_CFLAGS)
GMX_TEST_CXXFLAG(CXXFLAGS_WARN "/wd4800 /wd4355 /wd4996 /wd4305 /wd4244 /wd4267" GMXC_CXXFLAGS)
else() #Projects only use the C++ flags
GMX_TEST_CXXFLAG(CXXFLAGS_WARN "/wd4800 /wd4355 /wd4996 /wd4305 /wd4244 /wd4101 /wd4267 /wd4090" GMXC_CXXFLAGS)
GMX_TEST_CFLAG(CFLAGS_WARN "/wd4800 /wd4355 /wd4996 /wd4305 /wd4244 /wd4101 /wd4267 /wd4090 /wd4068" GMXC_CFLAGS)
GMX_TEST_CXXFLAG(CXXFLAGS_WARN "/wd4800 /wd4355 /wd4996 /wd4305 /wd4244 /wd4267 /wd4068" GMXC_CXXFLAGS)
else() # MSVC projects only use the C++ flags
GMX_TEST_CXXFLAG(CXXFLAGS_WARN "/wd4800 /wd4355 /wd4996 /wd4305 /wd4244 /wd4101 /wd4267 /wd4090 /wd4068" GMXC_CXXFLAGS)
endif()
endif()
......
......@@ -79,6 +79,10 @@ else()
if (NOT CUDA_VERSION VERSION_LESS 9.0)
list(APPEND _CUDA_CLANG_GENCODE_FLAGS "--cuda-gpu-arch=sm_70")
endif()
# Enable this when clang (8.0 ?) introduces sm_75 support
#if (NOT CUDA_VERSION VERSION_LESS 10.0)
# list(APPEND _CUDA_CLANG_GENCODE_FLAGS "--cuda-gpu-arch=sm_75")
#endif()
endif()
if (GMX_CUDA_TARGET_SM)
set_property(CACHE GMX_CUDA_TARGET_SM PROPERTY HELPSTRING "List of CUDA GPU architecture codes to compile for (without the sm_ prefix)")
......
......@@ -101,11 +101,25 @@ if(${GMX_FFT_LIBRARY} STREQUAL "FFTW3")
set(FFT_WARNING_MESSAGE "The FFTW library was compiled with neither --enable-sse nor --enable-sse2; those would have enabled SSE(2) SIMD instructions. This will give suboptimal performance. You should (re)compile the FFTW library with --enable-sse2 and --enable-avx (and --enable-avx2 or --enable-avx512 if supported).")
endif()
endif()
set(FFT_STATUS_MESSAGE "Using external FFT library - FFTW3")
find_path(ARMPL_INCLUDE_DIR "armpl.h" HINTS ${${FFTW}_INCLUDE_DIRS}
NO_DEFAULT_PATH
NO_CMAKE_ENVIRONMENT_PATH
NO_CMAKE_PATH
NO_SYSTEM_ENVIRONMENT_PATH
NO_CMAKE_SYSTEM_PATH)
if (ARMPL_INCLUDE_DIR)
set(GMX_FFT_ARMPL_FFTW3 1)
set(FFT_STATUS_MESSAGE "Using external FFT library - ARM Performance Library (FFTW3 compatibility mode)")
else()
set(FFT_STATUS_MESSAGE "Using external FFT library - FFTW3")
endif()
endif()
if (NOT GMX_FFT_ARMPL_FFTW3)
set(GMX_FFT_FFTW3 1)
endif()
set(FFT_LIBRARIES ${${FFTW}_LIBRARIES})
set(GMX_FFT_FFTW3 1)
elseif(${GMX_FFT_LIBRARY} STREQUAL "MKL")
# Intel 11 and up makes life somewhat easy if you just want to use
# all their stuff. It's not easy if you only want some of their
......
......@@ -43,6 +43,7 @@ gmx_option_multichoice(GMX_USE_LMFIT
"How to handle the lmfit dependency of GROMACS"
INTERNAL
INTERNAL EXTERNAL NONE)
mark_as_advanced(GMX_USE_LMFIT)
# Make a fully functional lmfit library target that libgromacs can
# depend on regardless of how the user directed lmfit support and/or
......@@ -70,15 +71,15 @@ function(gmx_manage_lmfit)
# we will not be installing any content.
install(TARGETS lmfit EXPORT libgromacs)
set(HAVE_LMFIT_VALUE TRUE)
set(HAVE_LMFIT 1 CACHE INTERNAL "Is lmfit found?")
elseif(GMX_USE_LMFIT STREQUAL "EXTERNAL")
# Find an external lmfit library.
find_package(Lmfit ${GMX_LMFIT_MINIMUM_REQUIRED_VERSION})
if(NOT LMFIT_FOUND)
message(FATAL_ERROR "External lmfit could not be found, please adjust your pkg-config path to include the lmfit.pc file")
find_package(Lmfit ${GMX_LMFIT_REQUIRED_VERSION})
if(NOT LMFIT_FOUND OR LMFIT_VERSION VERSION_LESS GMX_LMFIT_REQUIRED_VERSION)
message(FATAL_ERROR "External lmfit >= ${GMX_LMFIT_REQUIRED_VERSION} could not be found, please adjust your pkg-config path to include the lmfit.pc file")
endif()
set(HAVE_LMFIT_VALUE TRUE)
set(HAVE_LMFIT 1 CACHE INTERNAL "Is lmfit found?")
else()
# Create a dummy link target so the calling code doesn't need to know
# whether lmfit support is being compiled.
......@@ -87,6 +88,6 @@ function(gmx_manage_lmfit)
# we will not be installing any content.
install(TARGETS lmfit EXPORT libgromacs)
set(HAVE_LMFIT_VALUE FALSE)
set(HAVE_LMFIT 0 CACHE INTERNAL "Is lmfit found?")
endif()
endfunction()
#
# This file is part of the GROMACS molecular simulation package.
#
# Copyright (c) 2012,2013,2014,2015,2016,2017,2018, by the GROMACS development team, led by
# Copyright (c) 2012,2013,2014,2015,2016,2017,2018,2019, by the GROMACS development team, led by
# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
# and including many others, as listed in the AUTHORS file in the
# top-level source directory and at http://www.gromacs.org.
......@@ -142,8 +142,10 @@ else()
elseif(CUDA_VERSION VERSION_LESS "9.0")
list (APPEND GMX_CUDA_NVCC_GENCODE_FLAGS "-gencode;arch=compute_60,code=compute_60")
list (APPEND GMX_CUDA_NVCC_GENCODE_FLAGS "-gencode;arch=compute_61,code=compute_61")
else() # version >= 9.0
elseif(CUDA_VERSION VERSION_LESS "10.0")
list (APPEND GMX_CUDA_NVCC_GENCODE_FLAGS "-gencode;arch=compute_70,code=compute_70")
else() # version >= 10.0
list (APPEND GMX_CUDA_NVCC_GENCODE_FLAGS "-gencode;arch=compute_75,code=compute_75")
endif()
endif()
......@@ -166,7 +168,15 @@ list(APPEND GMX_CUDA_NVCC_FLAGS "${CUDA_HOST_COMPILER_OPTIONS}")
string(TOUPPER "${CMAKE_BUILD_TYPE}" _build_type)
gmx_check_if_changed(_cuda_nvcc_executable_or_flags_changed CUDA_NVCC_EXECUTABLE CUDA_NVCC_FLAGS CUDA_NVCC_FLAGS_${_build_type})
if(_cuda_nvcc_executable_or_flags_changed OR CUDA_HOST_COMPILER_CHANGED OR NOT GMX_NVCC_WORKS)
# We would like to be helpful and reject the host compiler with a
# clear error message at configure time, rather than let nvcc
# later reject the host compiler as not supported when the first
# CUDA source file is built. We've implemented that for current
# nvcc running on Unix-like systems, but e.g. changes to nvcc
# will further affect the limited portability of this checking
# code. Set the CMake variable GMX_NVCC_WORKS on if you want to
# bypass this check.
if((_cuda_nvcc_executable_or_flags_changed OR CUDA_HOST_COMPILER_CHANGED OR NOT GMX_NVCC_WORKS) AND NOT WIN32)
message(STATUS "Check for working NVCC/C compiler combination")
execute_process(COMMAND ${CUDA_NVCC_EXECUTABLE} -ccbin ${CUDA_HOST_COMPILER} -c ${CUDA_NVCC_FLAGS} ${CUDA_NVCC_FLAGS_${_build_type}} ${CMAKE_SOURCE_DIR}/cmake/TestCUDA.cu
RESULT_VARIABLE _cuda_test_res
......@@ -175,8 +185,9 @@ if(_cuda_nvcc_executable_or_flags_changed OR CUDA_HOST_COMPILER_CHANGED OR NOT G
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(${_cuda_test_res})
message(${_cuda_test_err})
message(STATUS "Check for working NVCC/C compiler combination - broken")
message(STATUS "${CUDA_NVCC_EXECUTABLE} standard output: '${_cuda_test_out}'")
message(STATUS "${CUDA_NVCC_EXECUTABLE} standard error: '${_cuda_test_err}'")
if(${_cuda_test_err} MATCHES "nsupported")
message(FATAL_ERROR "NVCC/C compiler combination does not seem to be supported. CUDA frequently does not support the latest versions of the host compiler, so you might want to try an earlier C/C++ compiler version and make sure your CUDA compiler and driver are as recent as possible.")
else()
......
#
# This file is part of the GROMACS molecular simulation package.
#
# Copyright (c) 2012,2013,2014,2015,2018, by the GROMACS development team, led by
# Copyright (c) 2012,2013,2014,2015,2018,2019, by the GROMACS development team, led by
# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
# and including many others, as listed in the AUTHORS file in the
# top-level source directory and at http://www.gromacs.org.
......@@ -64,6 +64,13 @@ add_definitions(${OpenCL_DEFINITIONS})
include_directories(SYSTEM ${OpenCL_INCLUDE_DIRS})
# Ensure the OpenCL implementation is 64-bit, because we only support that;
# Note that this can only be revised if the cl_mem size assumptions made
# (originally in pme-gpu-types.h) are relieved.
if (NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
message(FATAL_ERROR "The OpenCL implementation is only supported on 64-bit platforms.")
endif()
set(GMX_OPENCL_NB_CLUSTER_SIZE 8 CACHE STRING "Cluster size used by nonbonded OpenCL kernel. Set to 4 for Intel GPUs.")
mark_as_advanced(GMX_OPENCL_NB_CLUSTER_SIZE)
......
#
# This file is part of the GROMACS molecular simulation package.
#
# Copyright (c) 2017,2018, by the GROMACS development team, led by
# Copyright (c) 2017,2018,2019, by the GROMACS development team, led by
# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
# and including many others, as listed in the AUTHORS file in the
# top-level source directory and at http://www.gromacs.org.
......@@ -58,14 +58,27 @@ macro(find_power_vsx_toolchain_flags TOOLCHAIN_C_FLAGS_VARIABLE TOOLCHAIN_CXX_FL
# VSX uses the same function API as Altivec/VMX, so make sure we tune for the current CPU and not VMX.
# By putting these flags here rather than in the general compiler flags file we can safely assume
# that we are at least on Power7 since that is when VSX appeared.
# NOTE: Enabling instruction fusion on Power8/9 using -mpower8-fusion/-mpower9-fusion
# seems to produce buggy code (see #2747, #2746, #2734).
# Note that instruction fusion does have considerable performance benefits
# (up to 8% measured with gcc 8) if the issue is resolved the flag can be re-enabled.
gmx_run_cpu_detection(brand)
if(CPU_DETECTION_BRAND MATCHES "POWER7")
gmx_test_cflag(GNU_C_VSX_POWER7 "-mcpu=power7 -mtune=power7" ${TOOLCHAIN_C_FLAGS_VARIABLE})
gmx_test_cflag(GNU_CXX_VSX_POWER7 "-mcpu=power7 -mtune=power7" ${TOOLCHAIN_CXX_FLAGS_VARIABLE})
elseif(CPU_DETECTION_BRAND MATCHES "POWER8")
# Enable power8 vector extensions on such platforms.
gmx_test_cflag(GNU_C_VSX_POWER8 "-mcpu=power8 -mpower8-vector" ${TOOLCHAIN_C_FLAGS_VARIABLE})
gmx_test_cflag(GNU_CXX_VSX_POWER8 "-mcpu=power8 -mpower8-vector" ${TOOLCHAIN_CXX_FLAGS_VARIABLE})
elseif(CPU_DETECTION_BRAND MATCHES "POWER9")
# Enable power9 vector extensions on such platforms.
# TODO consider whether adding " -mpower9-vector -mpower9-fusion"
# is an advantage.
gmx_test_cflag(GNU_C_VSX_POWER9 "-mcpu=power9 -mtune=power9" ${TOOLCHAIN_C_FLAGS_VARIABLE})
gmx_test_cflag(GNU_CXX_VSX_POWER9 "-mcpu=power9 -mtune=power9" ${TOOLCHAIN_CXX_FLAGS_VARIABLE})
else()
# Enable power8 vector extensions on all platforms except old Power7.
gmx_test_cflag(GNU_C_VSX_POWER8 "-mcpu=power8 -mpower8-vector -mpower8-fusion -mdirect-move" ${TOOLCHAIN_C_FLAGS_VARIABLE})
gmx_test_cflag(GNU_CXX_VSX_POWER8 "-mcpu=power8 -mpower8-vector -mpower8-fusion -mdirect-move" ${TOOLCHAIN_CXX_FLAGS_VARIABLE})
# Don't add arch-specific flags for unknown architectures.
endif()
# Altivec was originally single-only, and it took a while for compilers
# to support the double-precision features in VSX.
......
......@@ -113,6 +113,14 @@ using myInt = int;
// Test template using statement
template<class T> using myPointer = T*;
myPointer<int> x;
// Test in-class array initalizers used with constructor initializer lists
struct TestStruct
{
float a[3][3] = {{0}}; // in-class initializer
float b; // not initialized until constructor initializer list
TestStruct();
};
TestStruct::TestStruct() : b(0) {}
int main() {
// Test nullptr
double *x = nullptr;
......@@ -146,6 +154,8 @@ int main() {
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19.0.23026")
message(FATAL_ERROR "GROMACS requires version 2015 (19.0.23026) or later of the MSVC C++ compiler for complete C++11 support")
endif()
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "XL")
message(FATAL_ERROR "No known version of xlC can compile the normal C++11 code in GROMACS, highest version checked is 16.1.0")
endif()
if(CXX11_SUPPORTED)
set(${CXX11_CXX_FLAG_NAME} ${CXX11_CXX_FLAG} PARENT_SCOPE)
......
......@@ -44,9 +44,9 @@
# if convert is working or not.
function(GMX_TEST_IMAGEMAGICK VARIABLE)
set(value_ OFF)
if(NOT ${ImageMagick_CONVERT_FOUND})
MESSAGE(STATUS "No image conversion possible without ImageMagick")
set(value_ OFF)
elseif(NOT DEFINED ${VARIABLE})
set(TEMPDIR "${CMAKE_CURRENT_BINARY_DIR}/imagemagicktmp")
FILE(MAKE_DIRECTORY ${TEMPDIR})
......@@ -58,12 +58,21 @@ function(GMX_TEST_IMAGEMAGICK VARIABLE)
OUTPUT_QUIET
ERROR_QUIET
)
FILE(REMOVE_RECURSE ${TEMPDIR})
if (${TEST_OUTPUT} EQUAL 0)
if (EXISTS ${SAMPLE_OUTPUT})
set(value_ ON)
else()
MESSAGE(STATUS "Could not convert sample image, ImageMagick convert can not be used")
if (GMX_BUILD_MANUAL)
set(type_ "WARNING")
else()
set(type_ "STATUS")
endif()
MESSAGE(${type_} "Could not convert sample image, ImageMagick convert can not be used")
set(value_ OFF)
endif()
FILE(REMOVE_RECURSE ${TEMPDIR})
endif()
if(NOT DEFINED ${VARIABLE})
set(${VARIABLE} ${value_} CACHE INTERNAL "Test if image conversion works")
mark_as_advanced(${VARIABLE})
endif()
set(${VARIABLE} ${value_} CACHE INTERNAL "Test if image conversion works")
endfunction()
#
# This file is part of the GROMACS molecular simulation package.
#
# Copyright (c) 2014,2015,2016,2017,2018, by the GROMACS development team, led by
# Copyright (c) 2014,2015,2016,2017,2018,2019, by the GROMACS development team, led by
# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
# and including many others, as listed in the AUTHORS file in the
# top-level source directory and at http://www.gromacs.org.
......@@ -82,7 +82,6 @@
# This ID is used for the source code tarball.
# GMX_MANUAL_DOI_ID
# Same as above, but for the reference manual.
# Setting and retrieving of those variables is handled in gmxCheckReleaseDOI.cmake
# They are collected into a single section below.
# The following variables are set based on these:
# GMX_VERSION String composed from GMX_VERSION_* numeric variables
......@@ -196,12 +195,12 @@
# The GROMACS convention is that these are the version number of the next
# release that is going to be made from this branch.
set(GMX_VERSION_MAJOR 2019)
set(GMX_VERSION_PATCH 0)
set(GMX_VERSION_PATCH 1)
# The suffix, on the other hand, is used mainly for betas and release
# candidates, where it signifies the most recent such release from
# this branch; it will be empty before the first such release, as well
# as after the final release is out.
set(GMX_VERSION_SUFFIX "-beta2")
set(GMX_VERSION_SUFFIX "")
# Conventionally with libtool, any ABI change must change the major
# version number, the minor version number should change if it's just
......@@ -235,13 +234,13 @@ if (NOT SOURCE_IS_SOURCE_DISTRIBUTION AND
endif()
set(REGRESSIONTEST_VERSION "${GMX_VERSION_STRING}")
set(REGRESSIONTEST_BRANCH "refs/heads/master")
set(REGRESSIONTEST_BRANCH "refs/heads/release-2019")
# Run the regressiontests packaging job with the correct pakage
# version string, and the release box checked, in order to have it
# build the regressiontests tarball with all the right naming. The
# naming affects the md5sum that has to go here, and if it isn't right
# release workflow will report a failure.
set(REGRESSIONTEST_MD5SUM "3d06d41e07f523d70ae575b9ad75c670" CACHE INTERNAL "MD5 sum of the regressiontests tarball for this GROMACS version")
set(REGRESSIONTEST_MD5SUM "36103a0078bf9a802e16ec982b4e5c4c" CACHE INTERNAL "MD5 sum of the regressiontests tarball for this GROMACS version")
math(EXPR GMX_VERSION_NUMERIC
"${GMX_VERSION_MAJOR}*10000 + ${GMX_VERSION_PATCH}")
......@@ -258,8 +257,8 @@ endif()
# from Zenodo for the manual and source code
# Has to be done by hand before every final release
# Use force to override anything given as a cmake command line input
set(GMX_MANUAL_DOI "" CACHE INTERNAL "reserved doi for GROMACS manual" FORCE)
set(GMX_SOURCE_DOI "" CACHE INTERNAL "reserved doi for GROMACS source code" FORCE)
set(GMX_MANUAL_DOI "10.5281/zenodo.2564761" CACHE INTERNAL "reserved doi for GROMACS manual" FORCE)
set(GMX_SOURCE_DOI "10.5281/zenodo.2564764" CACHE INTERNAL "reserved doi for GROMACS source code" FORCE)
#####################################################################
# git version info management
......
#
# This file is part of the GROMACS molecular simulation package.
#
# Copyright (c) 2014,2015,2016,2017,2018, by the GROMACS development team, led by
# Copyright (c) 2014,2015,2016,2017,2018,2019, by the GROMACS development team, led by
# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
# and including many others, as listed in the AUTHORS file in the
# top-level source directory and at http://www.gromacs.org.
......@@ -119,12 +119,13 @@ else()
elseif(NOT SPHINX_FOUND)
set(MANUAL_BUILD_IS_POSSIBLE OFF)
set(MANUAL_BUILD_NOT_POSSIBLE_REASON "Sphinx has not been found and is needed to create the LaTex input files")
elseif(NOT PDFLATEX_COMPILER OR NOT IMAGE_CONVERT_POSSIBLE)
elseif(NOT PDFLATEX_COMPILER)
set(MANUAL_BUILD_IS_POSSIBLE OFF)
set(MANUAL_BUILD_NOT_POSSIBLE_REASON "pdflatex or some other dependency (ImageMagick convert) is not available")
if (NOT IMAGE_CONVERT_POSSIBLE)
set(NO_IMAGE_CONVERT_REASON "Can not convert files for online or pdf manual")
endif()
set(MANUAL_BUILD_NOT_POSSIBLE_REASON "pdflatex is not available")
elseif(NOT IMAGE_CONVERT_POSSIBLE)
set(MANUAL_BUILD_IS_POSSIBLE OFF)
set(MANUAL_BUILD_NOT_POSSIBLE_REASON "a working form of ImageMagick convert is not available")
set(NO_IMAGE_CONVERT_REASON "Can not convert files for online or pdf manual")
# TODO Later, identify other dependencies like bibtex,
# make_index, date, some graphics conversion program,
# etc. Perhaps patch UseLATEX.cmake and contribute upstream.
......@@ -229,6 +230,7 @@ if (SPHINX_FOUND)
reference-manual/special/qmmm.rst
reference-manual/special/vmd-imd.rst
reference-manual/special/membrane-embedding.rst
reference-manual/special/mimic-qmmm.rst
# Analysis chapter
reference-manual/analysis.rst
reference-manual/analysis/using-groups.rst
......@@ -345,6 +347,7 @@ if (SPHINX_FOUND)
dev-manual/includestyle.rst
dev-manual/index.rst
dev-manual/jenkins.rst
dev-manual/known-issues.rst
dev-manual/language-features.rst
dev-manual/naming.rst
dev-manual/overview.rst
......@@ -364,6 +367,7 @@ if (SPHINX_FOUND)
how-to/visualize.rst
install-guide/index.rst
release-notes/index.rst
release-notes/2019/2019.1.rst
release-notes/2019/major/highlights.rst
release-notes/2019/major/features.rst
release-notes/2019/major/performance.rst
......@@ -373,6 +377,8 @@ if (SPHINX_FOUND)
release-notes/2019/major/deprecated-functionality.rst
release-notes/2019/major/portability.rst
release-notes/2019/major/miscellaneous.rst
release-notes/2018/2018.6.rst
release-notes/2018/2018.5.rst
release-notes/2018/2018.4.rst
release-notes/2018/2018.3.rst
release-notes/2018/2018.2.rst
......
......@@ -289,6 +289,8 @@ latex_elements = {
'pointsize': '11',
# Additional stuff for the LaTeX preamble.
# The tocdepth setting is needed to overwrite the default value set by Sphinx
# to get a more detailed toctree in the pdf version of the manual.
'preamble': r'''
\usepackage{here}
\usepackage{picins}
......@@ -304,6 +306,7 @@ latex_elements = {
\usepackage{pdflscape}
\pagenumbering{roman}
\usepackage{array}
\setcounter{tocdepth}{2}
''',
# Format output to avoid empty pages
'classoptions': ',openany,oneside'
......
......@@ -208,6 +208,18 @@ Variables affecting compilation/linking
subcounters which are available.
Defaults to ``OFF``.
.. cmake:: GMX_ENABLE_CCACHE
If set to ``ON``, attempts to set up the `ccache <https://ccache.samba.org>`_
caching compiler wrapper to speed up repeated builds.
The ``ccache`` executable is searched for with ``find_package()`` if CMake
is being run with a compatible build type.
If the executable is found and a compatible compiler is configured,
CMake launch wrapper scripts are set.
If enabled, the ``ccache`` executable location discovered by CMake must be
accessible during build, as well.
Defaults to ``OFF`` to minimize build system complexity.
.. cmake:: GMX_INSTALL_DATASUBDIR
Sets the subdirectory under CMAKE_INSTALL_DATADIR where GROMACS-specific
......@@ -337,6 +349,15 @@ Variables affecting the ``all`` target
Variables affecting special targets
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. cmake:: GMXAPI
If set ``ON``, the additional ``gmxapi`` C++ library is configured and the
``gmxapi`` headers will be installed. Provides the additional build tree
targets ``gmxapi-cppdocs`` and ``gmxapi-cppdocs-dev`` when Doxygen is
available. Also exports CMake configuration files for ``gmxapi`` that allow
``find_package(gmxapi)`` to import the ``Gromacs::gmxapi`` CMake target in
client projects that search the GROMACS installation root.
.. cmake:: GMX_BUILD_MANUAL
If set ``ON``, CMake detection for LaTeX and other prerequisites for the
......@@ -441,6 +462,12 @@ doxygen-*
turn runs as part of the Jenkins documentation job.
All CMake code is in :file:`docs/doxygen/`.
See :doc:`doxygen`.
gmxapi-cppdocs
Builds API documentation for gmxapi. Useful to authors of client software.
Documentation is generated in :file:`docs/api-user` in the build directory.
gmxapi-cppdocs-dev
Extract documentation for gmxapi and GROMACS developers to
:file:`docs/api-dev`.
install-guide
Runs Sphinx to generate a plain-text INSTALL file for the source package.
The files is generated at :file:`docs/install-guide/text/`, from where it
......
......@@ -58,6 +58,7 @@ locations in the developer guide.
documentation-generation
style
tools
known-issues
*********************
Doxygen documentation
......
.. _gmx-dev-known-issues:
Known issues relevant for developers
====================================
This is a non-exhaustive list of known issues that have been observed
and can be of interest for developers. These have not been solved
because they are either outside the scope of the GROMACS project
or are are simply too difficult or tedious to address ourselves.
FP exceptions with CUDA 7.0
---------------------------
When using CUDA 7.0 in a ``Debug`` build, if the PME FFT task is offloaded
to a GPU, a floating point exception will abort the :ref:`mdrun <gmx mdrun>` execution.
The exception originates from the CUDA FFT (cuFFT) library.
To avoid this issue, we advise using a later CUDA version.
Issues with GPU timer with OpenCL
---------------------------------
When building using OpenCL in ``Debug`` mode, it can happen that the GPU timer state gets
corrupted, leading to an assertion failure during the :ref:`mdrun <gmx mdrun>`.
This seems to be related to the load of other, unrelated tasks on the GPU.
......@@ -63,16 +63,6 @@ Build system
CMake
Main tool used in the build system.
ccache
When ``GMX_ENABLE_CCACHE`` is set, the `ccache
<https://ccache.samba.org>`_ caching compiler wrapper must be found
on the PATH, together with a supported compiler, so that a caching
compiler wrapper will be used with CMake. Not all compilers are
supported. Refer to the ``GMX_ENABLE_CCACHE`` option in
``CMakeLists.txt`` and to ``cmake/gmxManageCcache.cmake`` for
details. Please submit updates if you find that the current
configuration is too conservative.
packaging for distribution (CPack)
unit testing (CTest)
......
......@@ -12,23 +12,36 @@ Welcome to the |Gromacs| documentation!
The complete documentation is also available as a `printable PDF here`_.
.. toctree::
:maxdepth: 1
download
release-notes/index
install-guide/index
user-guide/index
how-to/index
reference-manual/index
dev-manual/index
==================
Indices and tables
==================
* :ref:`genindex`
.. toctree::
:maxdepth: 1
download
release-notes/index
install-guide/index
user-guide/index
how-to/index
reference-manual/index
dev-manual/index
==================
Indices and tables
==================
* :ref:`genindex`
.. only:: latex
The release notes can be found online at http://manual.gromacs.org/current/release-notes/index.html
.. toctree::
:maxdepth: 1
download
install-guide/index
user-guide/index
how-to/index
reference-manual/index
dev-manual/index
.. _printable PDF here: `gmx-manual`_
......
......@@ -83,18 +83,6 @@ appropriate value instead of ``xxx`` :
* ``-DGMX_FFT_LIBRARY=xxx`` to select whether to use ``fftw3``, ``mkl`` or ``fftpack`` libraries for `FFT support`_
* ``-DCMAKE_BUILD_TYPE=Debug`` to build |Gromacs| in debug mode
Building with MiMiC QM/MM support
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
MiMiC QM/MM interface integration will require linking against MiMiC
communication library, that establishes the communication channel between
|Gromacs| and CPMD. Check that the installation folder of the library
is added to CMAKE_PREFIX_PATH if it is installed in non-standard location.
Building QM/MM-capable version requires double-precision version of |Gromacs|
compiled with MPI support:
* ``-DGMX_DOUBLE=ON -DGMX_MPI -DGMX_MIMIC=ON``
Building older versions
^^^^^^^^^^^^^^^^^^^^^^^
......@@ -135,9 +123,9 @@ Other compilers may work (Cray, Pathscale, older clang) but do
not offer competitive performance. We recommend against PGI because
the performance with C++ is very bad.
The xlc compiler is not supported and has not been tested on POWER
architectures for |Gromacs|\ -\ |version|. We recommend to use the gcc
compiler instead, as it is being extensively tested.
The xlc compiler is not supported and version 16.1 does not compile on
POWER architectures for |Gromacs|\ -\ |version|. We recommend to use
the gcc compiler instead, as it is being extensively tested.
You may also need the most recent version of other compiler toolchain
components beside the compiler itself (e.g. assembler or linker);
......@@ -192,6 +180,8 @@ For maximum performance you will need to examine how you will use
parallelism is an advantage for |Gromacs|, but support for this is
generally built into your compiler and detected automatically.
.. _gmx-gpu-support:
GPU support
~~~~~~~~~~~
......@@ -213,7 +203,8 @@ version for |Gromacs| code as used as the host compiler for nvcc.
To make it possible to use other accelerators, |Gromacs| also includes
OpenCL_ support. The minimum OpenCL version required is
|REQUIRED_OPENCL_MIN_VERSION|. The current OpenCL implementation is recommended for
|REQUIRED_OPENCL_MIN_VERSION| and only 64-bit implementations are supported.
The current OpenCL implementation is recommended for
use with GCN-based AMD GPUs, and on Linux we recommend the ROCm runtime.
Intel integrated GPUs are supported with the Neo drivers.
OpenCL is also supported with NVIDIA GPUs, but using
......@@ -222,7 +213,8 @@ recommended. Also note that there are performance limitations (inherent
to the NVIDIA OpenCL runtime).
It is not possible to configure both CUDA and OpenCL
support in the same build of |Gromacs|, nor to support both
Intel and other vendors' GPUs with OpenCL.
Intel and other vendors' GPUs with OpenCL. A 64-bit implementation
of OpenCL is required and therefore OpenCL is only supported on 64-bit platforms.
.. _mpi-support:
......@@ -334,6 +326,24 @@ If you need to customize this further, use
The full list and order(!) of libraries you require are found in Intel's MKL documentation for your system.
Using ARM Performance Libraries
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The ARM Performance Libraries provides FFT transforms implementation for ARM
architectures.
Preliminary support is provided for ARMPL in |Gromacs| through its FFTW-compatible API.
Assuming that the ARM HPC toolchain environment including the ARMPL paths
are set up (e.g. through loading the appropriate modules like
``module load Module-Prefix/arm-hpc-compiler-X.Y/armpl/X.Y``) use the following cmake
options:
::
cmake -DGMX_FFT_LIBRARY=fftw3 \
-DFFTWF_LIBRARY="${ARMPL_DIR}/lib/libarmpl_lp64.so" \
-DFFTWF_INCLUDE_DIR=${ARMPL_DIR}/include
Other optional build components
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
......@@ -494,6 +504,8 @@ easier next time. You can also do this kind of thing with ``ccmake``,
but you should avoid this, because the options set with ``-D`` will not
be able to be changed interactively in that run of ``ccmake``.
.. _gmx-simd-support:
SIMD support
~~~~~~~~~~~~
......@@ -554,7 +566,7 @@ lead to performance loss, e.g. on Intel Skylake-X/SP and AMD Zen.
9. ``AVX_512_KNL`` Knights Landing Xeon Phi processors
10. ``Sparc64_HPC_ACE`` Fujitsu machines like the K computer have this.
11. ``IBM_VMX`` Power6 and similar Altivec processors have this.
12. ``IBM_VSX`` Power7, Power8 and later have this.
12. ``IBM_VSX`` Power7, Power8, Power9 and later have this.
13. ``ARM_NEON`` 32-bit ARMv7 with NEON support.
14. ``ARM_NEON_ASIMD`` 64-bit ARMv8 and later.
......@@ -764,7 +776,7 @@ gmxapi external API
For dynamic linking builds and on non-Windows platforms, an extra library and
headers are installed by setting ``-DGMXAPI=ON`` (default).
Build targets ``gmxapi_cppdocs`` and ``gmxapi_cppdocs_dev`` produce documentation in
Build targets ``gmxapi-cppdocs`` and ``gmxapi-cppdocs-dev`` produce documentation in
``docs/api-user`` and ``docs/api-dev``, respectively.
For more project information and use cases,
refer to the tracked :issue:`2585`,
......@@ -821,7 +833,8 @@ is found, and otherwise fall back on a version of BLAS internal to
accordingly. The internal versions are fine for normal use. If you
need to specify a non-standard path to search, use
``-DCMAKE_PREFIX_PATH=/path/to/search``. If you need to specify a
library with a non-standard name (e.g. ESSL on Power machines), then
library with a non-standard name (e.g. ESSL on Power machines
or ARMPL on ARM machines), then
set ``-DGMX_BLAS_USER=/path/to/reach/lib/libwhatever.a``.
If you are using Intel MKL_ for FFT, then the BLAS and
......@@ -832,6 +845,22 @@ On Apple platforms where the Accelerate Framework is available, these
will be automatically used for BLAS and LAPACK. This could be
over-ridden with ``GMX_BLAS_USER``, etc.
.. _installing with MiMiC:
Building with MiMiC QM/MM support
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
MiMiC QM/MM interface integration will require linking against MiMiC
communication library, that establishes the communication channel
between |Gromacs| and CPMD. The MiMiC Communication library can be
downloaded `here <https://gitlab.com/MiMiC-projects/CommLib>`__.
Compile and install it. Check that the installation folder of the
MiMiC library is added to CMAKE_PREFIX_PATH if it is installed in
non-standard location. Building QM/MM-capable version requires
double-precision version of |Gromacs| compiled with MPI support:
* ``-DGMX_DOUBLE=ON -DGMX_MPI -DGMX_MIMIC=ON``
Changing the names of |Gromacs| binaries and libraries
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
......
.\" Man page generated from reStructuredText.
.
.TH "GMX-ANADOCK" "1" "Nov 06, 2018" "2019-beta2" "GROMACS"
.TH "GMX-ANADOCK" "1" "Feb 15, 2019" "2019.1" "GROMACS"
.SH NAME
gmx-anadock \- Cluster structures from Autodock runs
.
......@@ -95,6 +95,6 @@ Maximum RMSD/distance for belonging to the same cluster
.sp
More information about GROMACS is available at <\fI\%http://www.gromacs.org/\fP>.
.SH COPYRIGHT
2018, GROMACS development team
2019, GROMACS development team
.\" Generated by docutils manpage writer.
.
.\" Man page generated from reStructuredText.
.
.TH "GMX-ANAEIG" "1" "Nov 06, 2018" "2019-beta2" "GROMACS"
.TH "GMX-ANAEIG" "1" "Feb 15, 2019" "2019.1" "GROMACS"
.SH NAME
gmx-anaeig \- Analyze eigenvectors/normal modes
.
......@@ -249,6 +249,6 @@ Number of eigenvalues to skip when computing the entropy due to the quasi harmon
.sp
More information about GROMACS is available at <\fI\%http://www.gromacs.org/\fP>.
.SH COPYRIGHT
2018, GROMACS development team
2019, GROMACS development team
.\" Generated by docutils manpage writer.
.
.\" Man page generated from reStructuredText.
.
.TH "GMX-ANALYZE" "1" "Nov 06, 2018" "2019-beta2" "GROMACS"
.TH "GMX-ANALYZE" "1" "Feb 15, 2019" "2019.1" "GROMACS"
.SH NAME
gmx-analyze \- Analyze data sets
.
......@@ -282,6 +282,6 @@ Time where to end the exponential fit of the correlation function, \-1 is until
.sp
More information about GROMACS is available at <\fI\%http://www.gromacs.org/\fP>.
.SH COPYRIGHT
2018, GROMACS development team
2019, GROMACS development team
.\" Generated by docutils manpage writer.
.
.\" Man page generated from reStructuredText.
.
.TH "GMX-ANGLE" "1" "Nov 06, 2018" "2019-beta2" "GROMACS"
.TH "GMX-ANGLE" "1" "Feb 15, 2019" "2019.1" "GROMACS"
.SH NAME
gmx-angle \- Calculate distributions and correlations for angles and dihedrals
.
......@@ -177,6 +177,6 @@ Counting transitions only works for dihedrals with multiplicity 3
.sp
More information about GROMACS is available at <\fI\%http://www.gromacs.org/\fP>.
.SH COPYRIGHT
2018, GROMACS development team
2019, GROMACS development team
.\" Generated by docutils manpage writer.
.
.\" Man page generated from reStructuredText.
.
.TH "GMX-AWH" "1" "Nov 06, 2018" "2019-beta2" "GROMACS"
.TH "GMX-AWH" "1" "Feb 15, 2019" "2019.1" "GROMACS"
.SH NAME
gmx-awh \- Extract data from an accelerated weight histogram (AWH) run
.
......@@ -108,6 +108,6 @@ Print free energy output in units of kT instead of kJ/mol
.sp
More information about GROMACS is available at <\fI\%http://www.gromacs.org/\fP>.
.SH COPYRIGHT
2018, GROMACS development team
2019, GROMACS development team
.\" Generated by docutils manpage writer.
.
.\" Man page generated from reStructuredText.
.
.TH "GMX-BAR" "1" "Nov 06, 2018" "2019-beta2" "GROMACS"
.TH "GMX-BAR" "1" "Feb 15, 2019" "2019.1" "GROMACS"
.SH NAME
gmx-bar \- Calculate free energy difference estimates through Bennett's acceptance ratio
.
......@@ -229,6 +229,6 @@ Whether to linearly extrapolate dH/dl values to use as energies
.sp
More information about GROMACS is available at <\fI\%http://www.gromacs.org/\fP>.
.SH COPYRIGHT
2018, GROMACS development team
2019, GROMACS development team
.\" Generated by docutils manpage writer.
.
.\" Man page generated from reStructuredText.
.
.TH "GMX-BUNDLE" "1" "Nov 06, 2018" "2019-beta2" "GROMACS"
.TH "GMX-BUNDLE" "1" "Feb 15, 2019" "2019.1" "GROMACS"
.SH NAME
gmx-bundle \- Analyze bundles of axes, e.g., helices
.
......@@ -148,6 +148,6 @@ Use the \fIz\fP\-axis as reference instead of the average axis
.sp
More information about GROMACS is available at <\fI\%http://www.gromacs.org/\fP>.
.SH COPYRIGHT
2018, GROMACS development team
2019, GROMACS development team
.\" Generated by docutils manpage writer.
.
.\" Man page generated from reStructuredText.
.
.TH "GMX-CHECK" "1" "Nov 06, 2018" "2019-beta2" "GROMACS"
.TH "GMX-CHECK" "1" "Feb 15, 2019" "2019.1" "GROMACS"
.SH NAME
gmx-check \- Check and compare files
.
......@@ -150,6 +150,6 @@ Last energy term to compare (if not given all are tested). It makes sense to go
.sp
More information about GROMACS is available at <\fI\%http://www.gromacs.org/\fP>.
.SH COPYRIGHT
2018, GROMACS development team
2019, GROMACS development team
.\" Generated by docutils manpage writer.
.
.\" Man page generated from reStructuredText.
.
.TH "GMX-CHI" "1" "Nov 06, 2018" "2019-beta2" "GROMACS"
.TH "GMX-CHI" "1" "Feb 15, 2019" "2019.1" "GROMACS"
.SH NAME
gmx-chi \- Calculate everything you want to know about chi and other dihedrals
.
......@@ -276,6 +276,6 @@ Rotamers with multiplicity 2 are printed in \fBchi.log\fP as if they had multipl
.sp
More information about GROMACS is available at <\fI\%http://www.gromacs.org/\fP>.
.SH COPYRIGHT
2018, GROMACS development team
2019, GROMACS development team
.\" Generated by docutils manpage writer.
.
.\" Man page generated from reStructuredText.
.
.TH "GMX-CLUSTER" "1" "Nov 06, 2018" "2019-beta2" "GROMACS"
.TH "GMX-CLUSTER" "1" "Feb 15, 2019" "2019.1" "GROMACS"
.SH NAME
gmx-cluster \- Cluster structures
.
......@@ -293,6 +293,6 @@ PBC check
.sp
More information about GROMACS is available at <\fI\%http://www.gromacs.org/\fP>.
.SH COPYRIGHT
2018, GROMACS development team
2019, GROMACS development team
.\" Generated by docutils manpage writer.
.
.\" Man page generated from reStructuredText.
.
.TH "GMX-CLUSTSIZE" "1" "Nov 06, 2018" "2019-beta2" "GROMACS"
.TH "GMX-CLUSTSIZE" "1" "Feb 15, 2019" "2019.1" "GROMACS"
.SH NAME
gmx-clustsize \- Calculate size distributions of atomic clusters
.
......@@ -163,6 +163,6 @@ RGB values for the color of the highest occupied cluster size
.sp
More information about GROMACS is available at <\fI\%http://www.gromacs.org/\fP>.
.SH COPYRIGHT
2018, GROMACS development team
2019, GROMACS development team
.\" Generated by docutils manpage writer.
.
.\" Man page generated from reStructuredText.
.
.TH "GMX-CONFRMS" "1" "Nov 06, 2018" "2019-beta2" "GROMACS"
.TH "GMX-CONFRMS" "1" "Feb 15, 2019" "2019.1" "GROMACS"
.SH NAME
gmx-confrms \- Fit two structures and calculates the RMSD
.
......@@ -119,6 +119,6 @@ Output B\-factors from atomic MSD values
.sp
More information about GROMACS is available at <\fI\%http://www.gromacs.org/\fP>.
.SH COPYRIGHT
2018, GROMACS development team
2019, GROMACS development team
.\" Generated by docutils manpage writer.
.
.\" Man page generated from reStructuredText.
.
.TH "GMX-CONVERT-TPR" "1" "Nov 06, 2018" "2019-beta2" "GROMACS"
.TH "GMX-CONVERT-TPR" "1" "Feb 15, 2019" "2019.1" "GROMACS"
.SH NAME
gmx-convert-tpr \- Make a modifed run-input file
.
......@@ -101,6 +101,6 @@ Set the charges of a group (from the index) to zero
.sp
More information about GROMACS is available at <\fI\%http://www.gromacs.org/\fP>.
.SH COPYRIGHT
2018, GROMACS development team
2019, GROMACS development team