Building own fftw now uses version 3.3.4
authorRossen Apostolov <rossen@kth.se>
Tue, 3 Mar 2015 13:47:17 +0000 (14:47 +0100)
committerMark Abraham <mark.j.abraham@gmail.com>
Mon, 15 Jun 2015 07:37:51 +0000 (09:37 +0200)
Uses --enable-avx when GMX_SIMD is also AVX-based (and not on Mac with
GCC, where the build runs into issues with which assembler to use).

Change-Id: I47bc33655970ba8fc4c005de00bad3c5cb06e763

src/contrib/fftw/CMakeLists.txt

index 538e0dd2ded9bf158e65d9fe11635f6ecec88b49..8d594f6f8b7c715cdd760889141eaa4351d2e86e 100644 (file)
@@ -58,10 +58,21 @@ if (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" AND BUILD_SHARED_LIBS) # FFTW doesn
     set(GMX_BUILD_OWN_FFTW_SHARED_FLAG ${GMX_BUILD_OWN_FFTW_SHARED_FLAG} --with-pic)
 endif()
 
-# Testing shows FFTW configured with --enable-avx is never better than --enable-sse2, so we do the latter always.
-if(${GMX_SIMD} MATCHES "^(SSE|AVX)")
-    set(GMX_BUILD_OWN_FFTW_OPTIMIZATION_CONFIGURATION --enable-sse2 CACHE INTERNAL "Optimization flags for FFTW compilation")
+# Set library optimizations
+set(_fftw_simd_support_level "")
+if(${GMX_SIMD} MATCHES "^(SSE|AVX)" AND APPLE AND "${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
+    # OS X with gcc and --enable-avx causes compilation issues. It's
+    # not an important enough performance loss to bother warning the
+    # user about.
+    set(_fftw_simd_support_level "--enable-sse2")
+elseif(${GMX_SIMD} MATCHES "^(SSE)")
+    set(_fftw_simd_support_level "--enable-sse2")
+elseif(${GMX_SIMD} MATCHES "^(AVX)")
+    # Testing shows FFTW configured with --enable-sse2 --enable-avx is
+    # slightly faster on most architectures than --enable-sse2 alone
+    set(_fftw_simd_support_level "--enable-sse2 --enable-avx")
 endif()
+set(GMX_BUILD_OWN_FFTW_OPTIMIZATION_CONFIGURATION ${_fftw_simd_support_level} CACHE INTERNAL "Optimization flags for FFTW compilation")
 
 # Allow cross-compiles
 if (TARGET_HOST)
@@ -69,12 +80,12 @@ if (TARGET_HOST)
 endif()
 
 # Machinery for running the external project
-set(EXTERNAL_FFTW_VERSION 3.3.3)
+set(EXTERNAL_FFTW_VERSION 3.3.4)
 # cmake make eats slashes //// -> //
 set(GMX_BUILD_OWN_FFTW_URL
     "http:////www.fftw.org/fftw-${EXTERNAL_FFTW_VERSION}.tar.gz" CACHE PATH
     "URL from where to download fftw (use an absolute path when offline, adjust GMX_BUILD_OWN_FFTW_MD5 if downloading other version than ${EXTERNAL_FFTW_VERSION})")
-set(GMX_BUILD_OWN_FFTW_MD5 0a05ca9c7b3bfddc8278e7c40791a1c2 CACHE STRING
+set(GMX_BUILD_OWN_FFTW_MD5 2edab8c06b24feeb3b82bbb3ebf3e7b3 CACHE STRING
     "Expected MD5 hash for the file at GMX_BUILD_OWN_FFTW_URL")
 mark_as_advanced(GMX_BUILD_OWN_FFTW_URL GMX_BUILD_OWN_FFTW_MD5)