# Decide on GPU settings based on user-settings and GPU/CUDA
# detection. VS2017 requires CUDA 9.0, for the other arch/compilers
-# rest we require CUDA 7.0 or later (including for clang-CUDA).
+# rest we require CUDA 8.0 or later (including for clang-CUDA)
+# because that is the earliest version that supports gcc 5.x
if(MSVC)
set(REQUIRED_CUDA_VERSION 9.0)
else()
- set(REQUIRED_CUDA_VERSION 7.0)
+ set(REQUIRED_CUDA_VERSION 8.0)
endif()
set(REQUIRED_CUDA_COMPUTE_CAPABILITY 3.0)
# Test CUDA build on a agent with no CUDA devices
# Test without TNG support
-gcc-4.9 gpuhw=none cuda-10.0 openmp no-tng release-with-assert
+gcc-8 gpuhw=none cuda-10.0 openmp no-tng release-with-assert
# Test non-default GMX_PREFER_STATIC_LIBS behavior
# TODO enable this
# newer infrastructure in CI, unless it's either easy or of
# high impact.)
-# Test older gcc
+# Test oldest supported gcc
# Test oldest supported CUDA
-# Test oldest supported cmake
# Test oldest supported Ubuntu
# Test MPI with CUDA
# Test MPI with gcc
# Test MPMD PME with library MPI
-gcc-4.8 gpuhw=nvidia cuda-7.0 cmake-3.9.6 mpi npme=1 nranks=2 openmp
+gcc-5 gpuhw=nvidia cuda-8.0 cmake-3.10.0 mpi npme=1 nranks=2 openmp
# Test non-default use of mdrun -gpu_id
# Test newest gcc supported by newest CUDA at time of release
# Test hwloc support
icc-19 no-thread-mpi double openmp mkl cmake-3.9.6 simd=none release hwloc
+# Test oldest supported cmake
# Test NVIDIA OpenCL
# Test external clFFT (for build speed)
# Test MPI + OpenCL
# Test AVX2_256 SIMD
-gcc-6 openmp gpuhw=nvidia opencl-1.2 clFFT-2.14 mpi simd=avx2_256
+gcc-6 openmp gpuhw=nvidia opencl-1.2 clFFT-2.14 cmake-3.9.6 mpi simd=avx2_256
# Test AMD OpenCL
# Test external clFFT (for build speed)
#
# This file is part of the GROMACS molecular simulation package.
#
-# Copyright (c) 2016, by the GROMACS development team, led by
+# Copyright (c) 2016,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.
import os.path
-build_options = ['gcc-4.8', 'cmake-3.4.3']
+build_options = ['gcc-5', 'cmake-3.9.6']
extra_projects = [Project.REGRESSIONTESTS]
def run_build(context, cmake_opts):
# minimal assertions, as we intend the code to be built and used
# by end users).
-# Test oldest supported gcc at time of release
# Test mpi support
# Test mdrun-only build
-gcc-4.8 mpi mdrun-only release cmake-3.9.6
+gcc-6 mpi mdrun-only release cmake-3.9.6
# Test static linking with gcc
# Test newest gcc at time of release
# Test newest supported clang version
clang-5 static double release cmake-3.10.0
+# Test oldest supported gcc at time of release
# Test with GPU support
# Test with newest CUDA at time of release
gcc-5 gpuhw=nvidia cuda-10.0 release
#
# This file is part of the GROMACS molecular simulation package.
#
-# Copyright (c) 2012,2013,2014,2015,2016, by the GROMACS development team, led by
+# Copyright (c) 2012,2013,2014,2015,2016,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.
set(GMX_SOFTWARE_INVSQRT OFF CACHE BOOL "Disabled for regressiontests reference builds" FORCE)
set(GMX_THREAD_MPI OFF CACHE BOOL "Disabled for regressiontests reference builds" FORCE)
- if(NOT "${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" OR NOT "${CMAKE_C_COMPILER_VERSION}" MATCHES "4.8")
+ if(NOT "${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_C_COMPILER_VERSION}" VERSION_GREATER_EQUAL "6")
message(WARNING "Reference values for regressiontests should use GROMACS compiled with "
- "gcc 4.8, but your configuration is using ${CMAKE_C_COMPILER_ID}-${CMAKE_C_COMPILER_VERSION}.")
+ "gcc 5.x, but your configuration is using ${CMAKE_C_COMPILER_ID}-${CMAKE_C_COMPILER_VERSION}.")
endif()
endif()
#
# This file is part of the GROMACS molecular simulation package.
#
-# Copyright (c) 2014,2017,2018, by the GROMACS development team, led by
+# Copyright (c) 2014,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.
# To help us fund GROMACS development, we humbly ask that you cite
# the research papers on the package. Check out http://www.gromacs.org.
-# Custom build type "TSAN", to be used for compiling GROMACS
-# with clang 3.4 or gcc 4.8 (currently pre-release) with ThreadSanitizer
-# (aka "TSan") turned on, so that the tests can be run to detect data races.
+# Custom build type "TSAN", to be used for compiling GROMACS with
+# clang or gcc with ThreadSanitizer (aka "TSan") turned on, so that
+# the tests can be run to detect data races.
#
# The main advantage of the clang version is that there can be a
# suppressions file that acts at compile time, though there is no use of
string(TOUPPER "${CMAKE_BUILD_TYPE}" _cmake_build_type)
if (_cmake_build_type STREQUAL TSAN)
set(TMPI_ATOMICS_DISABLED 1)
- if (NOT((CMAKE_${_language}_COMPILER_ID MATCHES "Clang" AND
- CMAKE_${_language}_COMPILER_VERSION VERSION_GREATER 3.2.999)
- OR (CMAKE_${_language}_COMPILER_ID MATCHES "GNU" AND
- CMAKE_${_language}_COMPILER_VERSION VERSION_GREATER 4.7.999)))
- message(FATAL_ERROR "The ThreadSanitizer build is only available with clang ${_human_readable_language} >=3.3 and gnu ${_human_readable_language} >=4.8.")
- endif()
endif()
endforeach()
# type. Used for, e.g., -Wno-array-bounds in Release to work around
# gcc-4.8 being a little too vocal about some perfectly good code,
# while using RelWithAssert (ie. without that suppression) in Jenkins.
+ #
+ # TODO check the behaviour of more recent gcc on the improved code
set(GMXC_${language}FLAGS_RELEASE "${GMXC_${language}FLAGS_RELEASE} ${GMXC_${language}FLAGS_RELEASE_ONLY}")
# Modify the real CMake variables for compiler flags for all
GMX_TEST_CFLAG(CFLAGS_WARN "-Wall -Wno-unused -Wunused-value -Wunused-parameter" GMXC_CFLAGS)
GMX_TEST_CFLAG(CFLAGS_WARN_EXTRA "-Wextra -Wno-missing-field-initializers -Wno-sign-compare -Wpointer-arith" GMXC_CFLAGS)
GMX_TEST_CFLAG(CFLAGS_WARN_UNDEF "-Wundef" GMXC_CFLAGS)
- # Since 4.8 on by default. For previous version disabling is a no-op. Only disabling for Release because with assert
- # the warnings are OK.
GMX_TEST_CFLAG(CFLAGS_WARN_REL "-Wno-array-bounds" GMXC_CFLAGS_RELEASE_ONLY)
if(CYGWIN)
GMX_TEST_CFLAG(CFLAGS_WARN_SUBSCRIPT "-Wno-char-subscripts" GMXC_CFLAGS)
set(CUDA_HOST_COMPILER_OPTIONS "")
if(APPLE AND CMAKE_C_COMPILER_ID MATCHES "GNU")
- # Some versions of gcc-4.8 and gcc-4.9 produce errors (in particular on OS X)
- # if we do not use -D__STRICT_ANSI__. It is harmless, so we might as well add it for all versions.
+ # Some versions of gcc-4.8 and gcc-4.9 have produced errors
+ # (in particular on OS X) if we do not use
+ # -D__STRICT_ANSI__. It is harmless, so we might as well add
+ # it for all versions.
list(APPEND CUDA_HOST_COMPILER_OPTIONS "-D__STRICT_ANSI__")
endif()
**Reference**
This build type compiles a version of |Gromacs| aimed solely at correctness. All
parallelization and optimization possibilities are disabled. This build type is
- compiled with gcc 4.7 to generate the regression test reference values, against
+ compiled with gcc 5 to generate the regression test reference values, against
which all other |Gromacs| builds are tested.
**RelWithAssert**
be useful for the tools.
**TSAN**
- Builds |Gromacs| for use with ThreadSanitzer in gcc >= 4.8 and clang
- >= 3.4 (http://clang.llvm.org/docs/ThreadSanitizer.html) to detect
+ Builds |Gromacs| for use with ThreadSanitzer in gcc and clang
+ (http://clang.llvm.org/docs/ThreadSanitizer.html) to detect
data races. This disables the use of atomics in ThreadMPI,
preferring the mutex-based implementation.
**ASAN**
- Builds |Gromacs| for use with AddressSanitzer in gcc >= 4.8 and
- clang >= 3.4 (http://clang.llvm.org/docs/AddressSanitizer.html) to
+ Builds |Gromacs| for use with AddressSanitzer in gcc and
+ clang (http://clang.llvm.org/docs/AddressSanitizer.html) to
detect many kinds of memory mis-use. By default, AddressSanitizer
includes LeakSanitizer.
**MSAN**
- Builds |Gromacs| for use with AddressSanitzer in clang >= 3.4
+ Builds |Gromacs| for use with AddressSanitzer in clang
(http://clang.llvm.org/docs/MemorySanitizer.html) to detect
reads of unitialized memory. This functionality requires that
dependencies of the |Gromacs| build have been built in a compatible
compiler. Since we require full C++11 support the minimum supported
compiler versions are
-* GNU (gcc) 4.8.1
+* GNU (gcc) 5.1
* Intel (icc) 17.0.1
* LLVM (clang) 3.3
* Microsoft (MSVC) 2017 (C++14 is used)
On Linux, both the Intel and clang compiler use the libstdc++ which
comes with gcc as the default C++ library. For |Gromacs|, we require
-the compiler to support libstc++ version 4.8.1 or higher. To select a
+the compiler to support libstc++ version 5.1 or higher. To select a
particular libstdc++ library, use:
* For Intel: ``-DCMAKE_CXX_FLAGS=-gcc-name=/path/to/gcc/binary``
it works because we have tested it. We do test on Linux, Windows, and
Mac with a range of compilers and libraries for a range of our
configuration options. Every commit in our git source code repository
-is currently tested on x86 with a number of gcc versions ranging from 4.8.1
+is currently tested on x86 with a number of gcc versions ranging from 5.1
through 7, versions 16 and 18 of the Intel compiler, and Clang
versions 3.4 through 5. For this, we use a variety of GNU/Linux
flavors and versions as well as recent versions of Windows. Under
gmx_bool perturbed;
gmx_bool has_vdw[4];
gmx_bool match;
- real tmp_charge[4] = { 0.0 }; /* init to zero to make gcc4.8 happy */
- int tmp_vdwtype[4] = { 0 }; /* init to zero to make gcc4.8 happy */
+ real tmp_charge[4] = { 0.0 }; /* init to zero to make gcc 7 happy */
+ int tmp_vdwtype[4] = { 0 }; /* init to zero to make gcc 7 happy */
int tjA;
gmx_bool qm;
solvent_parameters_t *solvent_parameters;
/*
* 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.
* based on the .mdp integrator field. */
void run(unsigned int ei, bool doRerun);
//! We only intend to construct such objects with an initializer list.
-#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 9)
- // Aspects of the C++11 spec changed after GCC 4.8.5, and
- // compilation of the initializer list construction in runner.cpp
- // fails in GCC 4.8.5.
Integrator() = delete;
-#endif
};
} // namespace gmx
{
public:
//! We only intend to construct such objects with an initializer list.
-#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 9)
- // Aspects of the C++11 spec changed after GCC 4.8.5, and
- // compilation of the initializer list construction in
- // runner.cpp fails in GCC 4.8.5.
EnergyEvaluator() = delete;
-#endif
/*! \brief Evaluates an energy on the state in \c ems.
*
* \todo In practice, the same objects mu_tot, vir, and pres
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2014,2015,2017,2018, by the GROMACS development team, led by
+ * Copyright (c) 2012,2014,2015,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.
# include <sys/types.h>
// old Mac needs sys/types.h before regex.h
# include <regex.h>
-#elif HAVE_CXX11_REGEX
+#else
# include <regex>
#endif
{
// static
-bool Regex::isSupported()
+bool Regex::isSupported() //TODO: Remove
{
-#if HAVE_POSIX_REGEX || HAVE_CXX11_REGEX
return true;
-#else
- return false;
-#endif
}
#if HAVE_POSIX_REGEX
regex_t regex_;
};
-#elif HAVE_CXX11_REGEX
+#else
class Regex::Impl
{
public:
private:
std::regex regex_;
};
-#else
-class Regex::Impl
-{
- public:
- explicit Impl(const char * /*value*/)
- {
- GMX_THROW(NotImplementedError(
- "GROMACS is compiled without regular expression support"));
- }
- explicit Impl(const std::string & /*value*/)
- {
- GMX_THROW(NotImplementedError(
- "GROMACS is compiled without regular expression support"));
- }
-
- bool match(const char * /*value*/) const
- {
- // Should never be reached.
- GMX_THROW(NotImplementedError(
- "GROMACS is compiled without regular expression support"));
- }
-};
#endif
Regex::Regex()