From 80dd3f5be4b565eb87685c464f3352618ac48f2d Mon Sep 17 00:00:00 2001 From: Mark Abraham Date: Thu, 7 Dec 2017 15:36:49 +1100 Subject: [PATCH] Update double-precision test configurations These changes improve coverage of double precision, using more release mode, particularly with latest gcc and icc, and using 128-bit SIMD, which have been cases that were buggy recently. The other aspects of the configurations that have been modified have been non-critical. Where appropriate, brief rationales are recorded. This resolves an old TODO item in the post-submit matrix. Fixed a sign mismatch in initializing an OpenCL variable that didn't need to be initialized. Noted relevant new TODOs. Refs #2300, #2325, #2326, #2334, #2335, #2336, #2337, #2338 Change-Id: I131fa1a6776d1e7809799c3f931a1fc8100fcdc9 --- admin/builds/post-submit-matrix.txt | 9 ++++++--- admin/builds/pre-submit-matrix.txt | 25 ++++++++++++++++--------- src/gromacs/gpu_utils/gpu_utils_ocl.cpp | 2 +- 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/admin/builds/post-submit-matrix.txt b/admin/builds/post-submit-matrix.txt index dae918ba9d..01d235e5c8 100644 --- a/admin/builds/post-submit-matrix.txt +++ b/admin/builds/post-submit-matrix.txt @@ -18,12 +18,15 @@ gcc-4.8 simd=ARM_NEON release-with-assert gcc-5 simd=ARM_NEON_ASIMD release-with-assert # Test the mdrun-only build +# Test newest gcc at time of release # TODO In combination with gmx from another build, arrange to run regressiontests -clang-3.7 double mpi no-openmp fftpack mdrun-only +gcc-7 mpi no-openmp fftpack mdrun-only # Test MPMD PME with thread-MPI -# TODO Add double to this configuration if/when we stablize the essentialdynamics tests -gcc-7 npme=1 nranks=2 no-openmp fftpack release-with-assert +# Test newest icc at time of release +# Test icc without SIMD in double precision in release mode +# TODO enable simd=avx_256 in this config, and change the above description once #2335 is resolved +icc-18 npme=1 nranks=2 no-openmp double fftpack release simd=none # Test non-default GMX_PREFER_STATIC_LIBS behavior # TODO enable this diff --git a/admin/builds/pre-submit-matrix.txt b/admin/builds/pre-submit-matrix.txt index 425b1e0551..d05f1e7030 100644 --- a/admin/builds/pre-submit-matrix.txt +++ b/admin/builds/pre-submit-matrix.txt @@ -29,23 +29,26 @@ gcc-4.8 gpu cuda-6.5 cmake-3.8.1 mpi npme=1 nranks=2 openmp # 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 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-7 tsan no-openmp fftpack +gcc-7 tsan no-openmp fftpack cmake-3.10.0 # Test newest gcc at time of release -gcc-7 mpi +# 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) # Test X11 build -gcc-6 double x11 +gcc-6 x11 # Test oldest supported cmake # Test older clang -# Test double precision +# Test clang in double precision # Test without OpenMP # Test thread-MPI # Test AVX_128_FMA SIMD + Double (Important for Simd4N=Simd4 and sizeof(SimdInt32)!=4*GMX_SIMD_REAL_WIDTH) @@ -61,28 +64,32 @@ msvc-2015 openmp release-with-assert # Test oldest supported icc # Test icc on Windows -icc-16 msvc-2015 fftpack +# Test icc with SIMD in mixed precision in release mode +icc-16 msvc-2015 fftpack simd=avx2_256 release -# 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-18.0 is only available there) -icc-18 no-thread-mpi openmp mkl cmake-3.10.0 simd=avx_256 +# 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 # Test AVX2_256 SIMD -gcc-4.8 openmp opencl cuda-7.5 mpi release-with-assert simd=avx2_256 +# 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 # 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 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 diff --git a/src/gromacs/gpu_utils/gpu_utils_ocl.cpp b/src/gromacs/gpu_utils/gpu_utils_ocl.cpp index 88edc975a1..dc1293d32f 100644 --- a/src/gromacs/gpu_utils/gpu_utils_ocl.cpp +++ b/src/gromacs/gpu_utils/gpu_utils_ocl.cpp @@ -165,7 +165,7 @@ static ocl_vendor_id_t get_vendor_id(char *vendor_name) //! This function is documented in the header file bool canDetectGpus() { - cl_uint numPlatforms = -1; + cl_uint numPlatforms; cl_int status = clGetPlatformIDs(0, nullptr, &numPlatforms); GMX_ASSERT(status != CL_INVALID_VALUE, "Incorrect call of clGetPlatformIDs detected"); if (status == CL_PLATFORM_NOT_FOUND_KHR) -- 2.11.4.GIT