# once, and for the intent to be reflected precisely in the
# configuration syntax, so that the configurations are stable even
# if the defaults change in future.
+#
+# The phrase "at time of release" refers to either the initial
+# GROMACS release from that branch, or the next expected release
+# from that branch. (We will tend not to retroactively support
+# newer infrastructure in CI, unless it's either easy or of
+# high impact.)
# Test older gcc
# Test oldest supported CUDA
-# Test oldest supported cmake
# Test oldest supported Ubuntu
-# Test X11 build
# Test MPI with CUDA
# Test MPMD PME with library MPI
-gcc-4.6 gpu cuda-5.0 mpi npme=1 nranks=2 openmp x11 cmake-2.8.8
-
-# Test newest gcc supported by newest CUDA shortly after the release
-# Test SIMD implementation of pair search for GPU code-path
-gcc-5 gpu cuda-8.0 openmp simd=avx2_256
+# Test cmake FindCUDA functionality introduced in 3.8
+gcc-4.8 gpu cuda-6.5 cmake-3.8.1 mpi npme=1 nranks=2 openmp
# Test newest gcc supported by newest CUDA at time of release
# Test thread-MPI with CUDA
-gcc-4.8 gpu thread-mpi cuda-7.5 openmp release
+# Test cmake version from before new FindCUDA support (in 3.8)
+# Test SIMD implementation of pair search for GPU code-path
+gcc-5 gpu cuda-8.0 thread-mpi openmp cmake-3.6.1 release-with-assert simd=avx2_256
-# Test with ThreadSanitizer
-# Test AVX2_256 SIMD
+# Test newest cmake at time of release
+# Test with ThreadSanitizer (compiled without OpenMP, even though
+# this gcc was configured with --disable-linux-futex, because
+# Redmine #1850 is unresolved, which causes more suspected
+# false positives than races detected)
# Test fftpack fallback
-gcc-4.9 tsan fftpack simd=avx2_256
+gcc-7 tsan no-openmp fftpack cmake-3.10.0
# Test newest gcc at time of release
+# Test gcc in double precision
+# Test 128-bit SIMD in double precision (to cover SimdInt32 support better)
+gcc-7 double mpi simd=avx_128_fma
+
# Test on MacOS (because gcc-6 is only available there)
-gcc-6 double
+# Test X11 build
+gcc-6 x11
+# Test oldest supported cmake
# Test older clang
-# Test double precision
-# Test with AddressSanitizer
+# Test clang in double precision
# Test without OpenMP
# Test thread-MPI
-clang-3.4 double thread-mpi no-openmp fftpack asan
+# Test AVX_128_FMA SIMD + Double (Important for Simd4N=Simd4 and sizeof(SimdInt32)!=4*GMX_SIMD_REAL_WIDTH)
+clang-3.4 double simd=avx_128_fma thread-mpi no-openmp fftpack cmake-3.4.3
+
+# Test newest clang at time of release
+# Test with AddressSanitizer (without OpenMP, see below)
+clang-5 no-openmp asan
# Test oldest supported MSVC on Windows
# Test newest supported MSVC on Windows
-msvc-2015 openmp release
+msvc-2015 openmp release-with-assert
-# Test newest cmake at time of release
+# Test newest icc at the time of release
+# Test icc without SIMD in double precision in release mode
# Test MKL
# Test without any MPI
-# Test on CentOS (because icc-16.0 is only available there)
-icc-16.0 no-thread-mpi openmp mkl cmake-3.3.2 simd=avx_256
-
-# Test AVX_128_FMA SIMD
-gcc-5 mpi openmp simd=avx_128_fma
+# Test on CentOS (because cmake-3.9.6 is available there)
+icc-18 no-thread-mpi double openmp mkl cmake-3.9.6 simd=none release
# Test NVIDIA OpenCL
# Test MPI + OpenCL
-gcc-4.8 openmp opencl cuda-7.5 mpi release
+# Test AVX2_256 SIMD
+# Test icc with SIMD in mixed precision in release mode
+icc-18 openmp opencl cuda-7.5 mpi release simd=avx2_256
# Test AMD OpenCL
-gcc-5 openmp opencl amdappsdk-3.0
+# Test AVX_128_FMA SIMD
+gcc-5 openmp simd=avx_128_fma opencl amdappsdk-3.0
# TODO
+# Add support for CUDA 9.0
+# Add OpenMP support to ASAN build (but libomp.so in clang-4 reports leaks, so might need a suitable build or suppression)
# Test hwloc support
-# Test newest supported Ubuntu
-# Migrate ThreadSanitizer test off GPU build slave
+# Test newest supported LTS Ubuntu
+# Update gpu testing specifiers per https://redmine.gromacs.org/issues/2161
+# Resolve Redmine #1850 so that ThreadSanitizer can test our OpenMP code
+# Support icc 17
+# Test AVX-512 when hardware is available