]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Disable vectorization if DEAL_II_VECTORIZATION_LEVEL=0
authorMartin Kronbichler <kronbichler@lnm.mw.tum.de>
Mon, 13 May 2019 08:21:35 +0000 (10:21 +0200)
committerMartin Kronbichler <kronbichler@lnm.mw.tum.de>
Mon, 13 May 2019 12:34:09 +0000 (14:34 +0200)
cmake/checks/check_01_cpu_features.cmake
include/deal.II/base/vectorization.h

index c86145d6feff75bd171197c60a6f972b2589daa1..72ddad565d710ebf771df4384988f91fc38ad6e1 100644 (file)
@@ -78,7 +78,7 @@ IF(DEAL_II_ALLOW_PLATFORM_INTROSPECTION)
 
   CHECK_CXX_SOURCE_RUNS(
     "
-    #include <emmintrin.h>
+    #include <x86intrin.h>
     int main()
     {
     __m128d a, b;
@@ -116,7 +116,7 @@ IF(DEAL_II_ALLOW_PLATFORM_INTROSPECTION)
     #ifndef __AVX__
     #error \"__AVX__ flag not set, no support for AVX\"
     #endif
-    #include <immintrin.h>
+    #include <x86intrin.h>
     class VectorizedArray
     {
     public:
@@ -175,7 +175,7 @@ IF(DEAL_II_ALLOW_PLATFORM_INTROSPECTION)
     #ifndef __AVX512F__
     #error \"__AVX512F__ flag not set, no support for AVX512\"
     #endif
-    #include <immintrin.h>
+    #include <x86intrin.h>
     int main()
     {
       __m512d a, b;
index 39b374b23ff0a538b693c8e5c7a6ad62c7317328..fb05f2432d016998a9492c6107003cc0a0c8e438 100644 (file)
@@ -26,7 +26,7 @@
 
 // Note:
 // The flag DEAL_II_COMPILER_VECTORIZATION_LEVEL is essentially constructed
-// according to the following scheme
+// according to the following scheme (on x86-based architectures)
 // #ifdef __AVX512F__
 // #define DEAL_II_COMPILER_VECTORIZATION_LEVEL 3
 // #elif defined (__AVX__)
 // 'check_01_cpu_features.cmake', ensures that these feature are not only
 // present in the compilation unit but also working properly.
 
-#if DEAL_II_COMPILER_VECTORIZATION_LEVEL >= 2 && defined(__SSE2__) && \
-  !defined(__AVX__)
-#  error \
-    "Mismatch in vectorization capabilities: AVX was detected during configuration of deal.II and switched on, but it is apparently not available for the file you are trying to compile at the moment. Check compilation flags controlling the instruction set, such as -march=native."
-#endif
-#if DEAL_II_COMPILER_VECTORIZATION_LEVEL >= 3 && defined(__SSE2__) && \
-  !defined(__AVX512F__)
-#  error \
-    "Mismatch in vectorization capabilities: AVX-512F was detected during configuration of deal.II and switched on, but it is apparently not available for the file you are trying to compile at the moment. Check compilation flags controlling the instruction set, such as -march=native."
-#endif
+#if DEAL_II_COMPILER_VECTORIZATION_LEVEL > 0
+
+#  if DEAL_II_COMPILER_VECTORIZATION_LEVEL >= 2 && defined(__SSE2__) && \
+    !defined(__AVX__)
+#    error \
+      "Mismatch in vectorization capabilities: AVX was detected during configuration of deal.II and switched on, but it is apparently not available for the file you are trying to compile at the moment. Check compilation flags controlling the instruction set, such as -march=native."
+#  endif
+#  if DEAL_II_COMPILER_VECTORIZATION_LEVEL >= 3 && defined(__SSE2__) && \
+    !defined(__AVX512F__)
+#    error \
+      "Mismatch in vectorization capabilities: AVX-512F was detected during configuration of deal.II and switched on, but it is apparently not available for the file you are trying to compile at the moment. Check compilation flags controlling the instruction set, such as -march=native."
+#  endif
 
-#if defined(_MSC_VER)
-#  include <intrin.h>
-#elif defined(__ALTIVEC__)
-#  include <altivec.h>
+#  if defined(_MSC_VER)
+#    include <intrin.h>
+#  elif defined(__ALTIVEC__)
+#    include <altivec.h>
 
 // altivec.h defines vector, pixel, bool, but we do not use them, so undefine
 // them before they make trouble
-#  undef vector
-#  undef pixel
-#  undef bool
-#else
-#  include <x86intrin.h>
+#    undef vector
+#    undef pixel
+#    undef bool
+#  else
+#    include <x86intrin.h>
+#  endif
+
 #endif
 
+
 DEAL_II_NAMESPACE_OPEN
 
 

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.