Disable false-positive warnings for ICPX 2021.2.0
authorAndrey Alekseenko <al42and@gmail.com>
Fri, 28 May 2021 22:51:33 +0000 (01:51 +0300)
committerAndrey Alekseenko <al42and@gmail.com>
Sun, 30 May 2021 13:25:21 +0000 (16:25 +0300)
Not happening in open-source intel/llvm compiler.

While originally it was enough to disable them at include stage, in
2021.2 the warning is issued in the kernel itself, so we had to expand
its usage beyond gmxsycl.h.

cmake/gmxCFlags.cmake
src/gromacs/gpu_utils/gmxsycl.h

index 831dbcac400a1816c2c918ab92645c4e0c4e38c2..64e963d85b173af9bb9b67611958adc3ca4c4584 100644 (file)
@@ -362,9 +362,16 @@ macro (gmx_c_flags)
             GMX_TEST_CXXFLAG(CXXFLAGS_PRAGMA "-Wno-unknown-pragmas" GMXC_CXXFLAGS)
         endif()
         GMX_TEST_CXXFLAG(CXXFLAGS_WARN_NO_MISSING_FIELD_INITIALIZERS "-Wno-missing-field-initializers" GMXC_CXXFLAGS)
-       # Intel LLVM 2021.2 defaults to no-finite-math which isn't OK for GROMACS
-       if(GMX_INTEL_LLVM AND GMX_INTEL_LLVM_VERSION GREATER_EQUAL 2021020)
-           GMX_TEST_CXXFLAG(CXXFLAGS_FINITE_MATH "-fno-finite-math-only" GMXC_CXXFLAGS)
+        # Intel LLVM 2021.2 defaults to no-finite-math which isn't OK for GROMACS
+        if(GMX_INTEL_LLVM AND GMX_INTEL_LLVM_VERSION GREATER_EQUAL 2021020)
+            GMX_TEST_CXXFLAG(CXXFLAGS_FINITE_MATH "-fno-finite-math-only" GMXC_CXXFLAGS)
+        endif()
+        # Some versions of Intel ICPX compiler (at least 2021.1.1 to 2021.2.0) fail to unroll a loop
+        # in sycl::accessor::__init, and emit -Wpass-failed=transform-warning. This is a useful
+        # warning, but mostly noise right now. Probably related to using shared memory accessors.
+        # Note: not a typo: ICPX 2021.1.1 has GMX_INTEL_LLVM_VERSION 202110; 2021.2.0 has 20210200.
+        if(GMX_INTEL_LLVM AND GMX_INTEL_LLVM_VERSION GREATER_EQUAL 202110)
+            GMX_TEST_CXXFLAG(CXXFLAGS_NO_UNROLL_WARNING "-Wno-pass-failed" GMXC_CXXFLAGS)
         endif()
     endif()
 
index 77891f937dc1b208e3c5af4627653eb7cddddd88..897b5493d2ba1f1bcfdb86c7edac779ee4478042 100644 (file)
 
 #include "config.h"
 
-/* Some versions of Intel ICPX compiler (at least 2021.1.1 and 2021.1.2) fail to unroll a loop
- * in sycl::accessor::__init, and emit -Wpass-failed=transform-warning. This is a useful
- * warning, but mostly noise right now. Probably related to using shared memory accessors.
- * The unroll directive was introduced in https://github.com/intel/llvm/pull/2449. */
-#if GMX_SYCL_DPCPP
-#    include <CL/sycl/version.hpp>
-#    define DISABLE_UNROLL_WARNINGS \
-        ((__SYCL_COMPILER_VERSION >= 20201113) && (__SYCL_COMPILER_VERSION <= 20201214))
-#else
-#    define DISABLE_UNROLL_WARNINGS 0
-#endif
-
-#if DISABLE_UNROLL_WARNINGS
-#    pragma clang diagnostic push
-#    pragma clang diagnostic ignored "-Wpass-failed"
-#endif
-
 // For hipSYCL, we need to activate floating-point atomics
 #if GMX_SYCL_HIPSYCL
 #    define HIPSYCL_EXT_FP_ATOMICS
 #    include <CL/sycl.hpp>
 #endif
 
-#if DISABLE_UNROLL_WARNINGS
-#    pragma clang diagnostic pop
-#endif
-
 #if GMX_SYCL_HIPSYCL
 #    pragma clang diagnostic pop
 #endif
 
-#undef DISABLE_UNROLL_WARNINGS
-
 /* Exposing Intel-specific extensions in a manner compatible with SYCL2020 provisional spec.
  * Despite ICPX (up to 2021.1.2 at the least) having SYCL_LANGUAGE_VERSION=202001,
  * some parts of the spec are still in custom sycl::ONEAPI namespace (sycl::intel in beta versions),