Propose a post-submit matrix
authorMark Abraham <mark.j.abraham@gmail.com>
Thu, 9 Mar 2017 17:49:12 +0000 (18:49 +0100)
committerMark Abraham <mark.j.abraham@gmail.com>
Mon, 17 Apr 2017 11:06:13 +0000 (13:06 +0200)
A recent bug would have been prevented if some testing of
separate PME ranks had been occuring.

Extended gromacs.py to permit regressiontests to run
with separate PME ranks, and/or designated numbers of
ranks, or GPU ids.

Quieted some newly exposed warnings.

Documented more of the reasoning behind matrix choices, to help us
maintain better. Noted various TODOs for better testing coverage.

Refs #2134

Change-Id: Ib9828ca769d7a446c61fb8bb7a68128a38991aba

admin/builds/gromacs.py
admin/builds/post-submit-matrix.txt
admin/builds/pre-submit-matrix.txt
src/gromacs/mdlib/nbnxn_kernels/simd_2xnn/nbnxn_kernel_simd_2xnn.cpp
src/gromacs/mdlib/nbnxn_kernels/simd_4xn/nbnxn_kernel_simd_4xn.cpp

index 2ef5be3327c11c47111e9a47649a16fa6a85996a..ceefaf9c46be5c6528303a3aaebfd4db3ebd5cf1 100644 (file)
@@ -1,7 +1,7 @@
 #
 # This file is part of the GROMACS molecular simulation package.
 #
-# Copyright (c) 2015,2016, by the GROMACS development team, led by
+# Copyright (c) 2015,2016,2017, 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,6 +34,8 @@
 
 import os.path
 
+# These are accessible later in the script, just like other
+# declared options, via e.g. context.opts.release.
 extra_options = {
     'mdrun-only': Option.simple,
     'static': Option.simple,
@@ -47,8 +49,12 @@ extra_options = {
     'thread-mpi': Option.bool,
     'gpu': Option.bool,
     'opencl': Option.bool,
-    'openmp': Option.bool
+    'openmp': Option.bool,
+    'nranks': Option.string,
+    'npme': Option.string,
+    'gpu_id': Option.string
 }
+
 extra_projects = [Project.REGRESSIONTESTS]
 
 def do_build(context):
@@ -178,19 +184,21 @@ def do_build(context):
                 # not explicitly set
                 cmd += ' -ntomp 2'
 
-            if context.opts.gpu:
-                if context.opts.mpi or use_tmpi:
-                    gpu_id = '01' # for (T)MPI use the two GT 640-s
-                else:
-                    gpu_id = '0' # use GPU #0 by default
-                cmd += ' -gpu_id ' + gpu_id
+            if context.opts.gpu_id:
+                cmd += ' -gpu_id ' + context.opts.gpu_id
+
+            if context.opts.nranks:
+                nranks = context.opts.nranks
+            else:
+                nranks = '2'
+
+            if context.opts.npme:
+                cmd += ' -npme ' + context.opts.npme
 
-            # TODO: Add options to influence this (should be now local to the build
-            # script).
             if context.opts.mpi:
-                cmd += ' -np 2'
+                cmd += ' -np ' + nranks
             elif use_tmpi:
-                cmd += ' -nt 2'
+                cmd += ' -nt ' + nranks
             if context.opts.double:
                 cmd += ' -double'
             context.run_cmd(cmd, shell=True, failure_message='Regression tests failed to execute')
index 2c9bdae79655aaad22ac4d47a74861043075f5d1..69e94ad41a232664e8e8a3526ae0a32a6e1ce958 100644 (file)
@@ -1,35 +1,42 @@
-gcc-4.4 double no-openmp host=bs_centos63
-clang-3.4 gmxtest+"-npme 1 -nt 3" double no-openmp fftpack release host=bs_centos63
-clang-3.4 double no-openmp fftpack asan host=bs_centos63
-gcc-4.1 double no-openmp simd-sse2 host=bs_nix1004
-gcc-4.3 mpi simd-sse2 host=bs_nix1004
-gcc-4.5 no-openmp atlas mpi host=bs_nix64
-icc-12.1.2 no-openmp no-threadmpi host=bs_nix64
-gcc-4.7 no-openmp host=bs_nix64
-icc-12.1.2 double mkl release host=bs_nix64
-gcc-4.7 double no-threadmpi simd-sse4.1 release host=bs_nix64
-icc-15.0.0 gmxtest+"-ntomp 1" no-threadmpi host=bs_mac
-gcc-4.8 no-openmp no-threadmpi fftpack optimized host=bs_mac
-gcc-4.9 optimized host=bs_mac
-icc-14.0.3 Platform=Phi host=bs_mic
-icc-14.0.3 Platform=Phi optimized host=bs_mic
-clang-3.4 asan host=bs_mic
-msvc-2010 release host=bs_Win2008_64
-msvc-2010 double no-threadmpi fftpack cmake+GMX_PREFER_STATIC_LIBS=OFF release host=bs_Win2008_64
-icc-12.1.2 cmake+GMX_DLOPEN=OFF no-threadmpi fftpack release host=bs_Win2008_64
-clang-3.6 double no-openmp fftpack host=bs_nix1204
-gcc-4.7 gmxtest+"-nt 1" gpu cuda-4.2 double simd-sse4.1 host=bs_nix1204
-gcc-4.4 gpu cuda-4.0 mpi simd-avx_256 host=bs_nix1204
-gcc-4.5 gpu cuda-4.1 atlas mpi simd-sse4.1 host=bs_nix1204
-gcc-4.6 gpu cuda-5.0 no-threadmpi release host=bs_nix1204
-gcc-4.7 gpu cuda-5.5 atlas simd-sse2 release host=bs_nix1204
-gcc-4.4 double mpi simd-avx_256 host=bs_nix1310
-gcc-4.6 double no-threadmpi simd-avx_256 release host=bs_nix1310
-gcc-4.7 gmxtest+"-npme 1 -np 3" no-threadmpi mpi simd-avx2_256 release host=bs_nix1310
-gcc-4.7 gmxtest+"-npme 1 -nt 3 -gpu_id 12" gpu cuda-5.5 simd-sse4.1 release host=bs_nix1310
-clang-3.4 gmxtest+"-npme 1 -nt 3" double no-openmp simd-avx_256 release host=bs_nix1310
-gcc-4.9 tsan host=bs_nix1310
-gcc-4.9 double no-threadmpi optimized host=bs_nix1404
-gcc-4.7 double gmxtest+"-nt 1" host=bs_nix1404
-gcc-5.1 gmxtest+"-npme 1 -np 3" double no-threadmpi mpi host=bs_nix1404
-gcc-5.1 mpi release host=bs_nix1404
+# Comment line(s) preceding each configuration document the main
+# intent behind that configuration, so that we can correctly judge
+# whether to preserve that during maintenance decisions.
+
+# Test the mdrun-only build
+# TODO In combination with gmx from another build, arrange to run regressiontests
+clang-3.7 double mpi no-openmp fftpack mdrun-only
+
+# Test MPMD PME with thread-MPI
+# TODO Add double to this configuration if/when Carsten stablizes essentialdynamics tests
+gcc-5.2 npme=1 nranks=2 no-openmp fftpack simd=avx_128_fma release
+
+# Test non-default GMX_PREFER_STATIC_LIBS behavior
+# TODO enable this
+# msvc-2015 double no-threadmpi no-prefer-static-libs release
+
+# Test behaviour when dlopen is not present
+# TODO enable this
+# icc-16.0 no-dlopen no-threadmpi double mkl release
+
+# Test SSE4.1 SIMD
+# Test single-rank GPU
+gcc-4.8 nranks=1 gpu cuda-7.5 simd=sse4.1
+
+# Test MPMD PME with library MPI
+clang-3.4 npme=1 nranks=2 mpi
+
+# Test non-default use of mdrun -gpu_id
+# Test SSE2 SIMD
+gcc-4.8 gpu npme=1 nranks=2 gpu_id=2 cuda-7.5 simd=sse2 release
+
+# TODO
+# Re-enable Phi build
+# Test without TNG support
+# Test without hwloc support
+# Test with NVML support
+# Test statically linked hwloc support (if/when it can work well)
+# Test 3D DD (2D is partially covered in regressiontests)
+# Test own-fftw build (from local copy of the file)
+# Test mdrun -tunepme (e.g. with relaxed tolerances, for now)
+# Consider testing of other CMake option paths
+# Consider adding our ARM dev boards as slaves to improve cross-platform portability testing.
index 6f24dcad9a562e4badc3abb453b81b3ad5316a0b..257ade2cedc920250639c0b2673d01442e78a6bf 100644 (file)
@@ -1,13 +1,62 @@
-gcc-4.6 gpu cuda-5.0 mpi openmp x11 cmake-2.8.8
+# Comment line(s) preceding each configuration document the main
+# intent behind that configuration, so that we can correctly judge
+# whether to preserve that during maintenance decisions.
+
+# 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 at time of release
+# Test thread-MPI with CUDA
 gcc-4.8 gpu cuda-7.5 openmp release
+
+# Test with ThreadSanitizer
+# Test AVX2_256 SIMD
+# Test fftpack fallback
 gcc-4.9 tsan fftpack simd=avx2_256
+
+# Test newest gcc at time of release
+# Test on MacOS
 gcc-6.1 double
+
+# Test older clang
+# Test double precision
+# Test with AddressSanitizer
+# Test without OpenMP
 clang-3.4 double no-openmp fftpack asan
-# TODO move mdrun-only config to post-submit matrix
-clang-3.7 double mpi no-openmp fftpack mdrun-only
+
+# Test oldest supported MSVC on Windows
+# Test newest supported MSVC on Windows
 msvc-2015 openmp release
+
+# Test oldest supported icc on Windows
+# Test newest supported icc on Windows
 icc-16.0 msvc-2015 fftpack
+
+# Test newest cmake at time of release
+# Test MKL
+# Test without any MPI
+# Test on CentOS
 icc-16.0 no-thread-mpi openmp mkl cmake-3.3.2 simd=avx_256
+
+# Test AVX_128_FMA SIMD
 gcc-5.2 mpi openmp simd=avx_128_fma
+
+# Test NVIDIA OpenCL
+# Test MPI + OpenCL
 gcc-4.8 openmp opencl cuda-7.5 mpi release
+
+# Test AMD OpenCL
 gcc-5.2 openmp opencl amdappsdk-3.0
+
+# TODO
+# When merging to master branch, make a configuration use bs_nix1204
+# When merging to master branch, note TODO to support updated compilers and cmake for release-2017
+# Test hwloc support
+# Test newest supported Ubuntu
+# Migrate ThreadSanitizer test off GPU build slave
index 987206eec811cd15df8efd2e2e406b484504b4fd..0f97061d86603c156ad83bcbc79b1ccd827a4b47 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * 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,2017, 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.
@@ -277,7 +277,7 @@ nbnxn_kernel_simd_2xnn(nbnxn_pairlist_set_t      gmx_unused *nbl_list,
     int                nnbl;
     nbnxn_pairlist_t **nbl;
     int                coulkt, vdwkt = 0;
-    int                nb, nthreads;
+    int                nb, nthreads gmx_unused;
 
     nnbl = nbl_list->nnbl;
     nbl  = nbl_list->nbl;
index 61c00d6e46f3470225617b1471d7b3219c76ef76..8f062dfc312444f49235d47802ef31fca3676aa0 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * 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,2017, 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.
@@ -276,7 +276,7 @@ nbnxn_kernel_simd_4xn(nbnxn_pairlist_set_t      gmx_unused *nbl_list,
     int                nnbl;
     nbnxn_pairlist_t **nbl;
     int                coulkt, vdwkt = 0;
-    int                nb, nthreads;
+    int                nb, nthreads gmx_unused;
 
     nnbl = nbl_list->nnbl;
     nbl  = nbl_list->nbl;