diff --git a/CMake/VTKmCompilerOptimizations.cmake b/CMake/VTKmCompilerOptimizations.cmake index c9aae979c..7743fc0d3 100644 --- a/CMake/VTKmCompilerOptimizations.cmake +++ b/CMake/VTKmCompilerOptimizations.cmake @@ -116,6 +116,11 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Intel") set(avx2_flags -xCORE-AVX2) if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15.0) + message(STATUS "While Intel ICC 14.0 and lower support #pragma simd") + message(STATUS "The code that is generated in testing has caused SIGBUS") + message(STATUS "runtime signals to be thrown. We recommend you upgrade") + message(STATUS "or disable vectorization.") + elseif (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16.0) list(APPEND vec_levels avx avx2) else() list(APPEND vec_levels avx avx2 avx512 knl) diff --git a/vtkm/internal/Configure.h.in b/vtkm/internal/Configure.h.in index 58c73adf8..fc2892432 100644 --- a/vtkm/internal/Configure.h.in +++ b/vtkm/internal/Configure.h.in @@ -170,8 +170,12 @@ //Determine if current compiler supports vectorization pragma's //if so set the define VTKM_COMPILER_SUPPORTS_VECTOR_PRAGMAS +// +//While ICC 14 does support simd pragma, in testing we find that the +//simd code produces SIGBUS and isn't safe to use. +// #if ( defined(VTKM_GCC) && ( __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 9) ) ) || \ - ( defined(VTKM_ICC) && (__INTEL_COMPILER >= 1400) ) || \ + ( defined(VTKM_ICC) && (__INTEL_COMPILER >= 1500) ) || \ ( defined(VTKM_CLANG) && defined(__apple_build_version__) && (__apple_build_version__ >= 7000000) ) || \ ( defined(VTKM_CLANG) && !defined(__apple_build_version__) && (__clang_major__ > 3) ) || \ ( defined(VTKM_CLANG) && !defined(__apple_build_version__) && (__clang_major__ == 3 && __clang_minor__ >= 5) )