Merge branch 'release-4-5-patches' of git://git.gromacs.org/gromacs into release...
authorSzilard Pall <pszilard@cbr.su.se>
Tue, 31 Aug 2010 15:25:37 +0000 (17:25 +0200)
committerSzilard Pall <pszilard@cbr.su.se>
Tue, 31 Aug 2010 15:25:37 +0000 (17:25 +0200)
CMakeLists.txt
cmake/FindFFTW3.cmake
cmake/FindFFTW3F.cmake
src/gmxlib/CMakeLists.txt
src/kernel/openmm_wrapper.cpp

index e3f3f2e9f2042e8058be658f2cc696d15bdc0b30..5d713e226072fbe0f8291e132cc076bd3f07f1a5 100644 (file)
@@ -49,7 +49,7 @@ gmx_c_flags()
 ########################################################################
 option(GMX_DOUBLE "Use double precision" OFF)
 option(GMX_MPI    "Build a parallel (message-passing) version of GROMACS" OFF)
-option(GMX_THREADS    "Build a parallel (threaded-based) version of GROMACS)" ON)
+option(GMX_THREADS    "Build a parallel (thread-based) version of GROMACS)" ON)
 option(GMX_SOFTWARE_INVSQRT "Use GROMACS software 1/sqrt" ON)
 option(GMX_FAHCORE "Build a library with mdrun functionality" OFF)
 option(GMX_OPENMM "Accelerated execution on GPUs through the OpenMM library" OFF)
@@ -142,20 +142,25 @@ endif(GMX_MPI)
 if(GMX_OPENMM)
     cmake_minimum_required(VERSION 2.6.4)
     # we'll use the built-in fft to avoid unnecessary dependencies
-    set (GMX_FFT_LIBRARY "fftpack")
+    message(STATUS "No external FFT libraries needed for the OpenMM build, using fftpack!")
+    set (GMX_FFT_LIBRARY "fftpack" CACHE STRING 
+               "No external FFT libraries needed for the OpenMM build, using fftpack!" FORCE)
     if(GMX_MPI)
         message(FATAL_ERROR "The OpenMM build is not compatible with MPI!")
     endif(GMX_MPI)
     if(GMX_THREADS)
-        message(STATUS "Threads not compatible with OpenMM build, disabled")
-        set(GMX_THREADS OFF)
+        message(STATUS "Threads not compatible with OpenMM build, disabled!")
+        set(GMX_THREADS OFF CACHE BOOL 
+               "Threads not compatible with OpenMM build, disabled!" FORCE)
     endif(GMX_THREADS)
     if(GMX_SOFTWARE_INVSQRT)
-        set(GMX_SOFTWARE_INVSQRT OFF)
+        set(GMX_SOFTWARE_INVSQRT OFF FORCE)
     endif(GMX_SOFTWARE_INVSQRT)
-    if(NOT GMX_ACCELERATION MATCHES "auto|none|None|NONE" OR NOT ${GMX_ACCELERATION} STREQUAL "")
-        message(WARNING "The OpenMM build does not support other acceleration modes!")
-        set(GMX_ACCELERATION "none")
+    if(NOT GMX_ACCELERATION MATCHES "^(none|None|NONE)")
+        message(WARNING "CPU-based acceleration turned off, OpenMM does not support/need any!")        
+       unset(GMX_ACCELERATION CACHE)
+        set(GMX_ACCELERATION "none" CACHE STRING 
+               "CPU-based acceleration turned off, OpenMM does not support/need any!" FORCE)
     endif()
     if(GMX_FAHCORE)
         message(FATAL_ERROR "The OpenMM build does not support FAH build!")
@@ -373,7 +378,7 @@ gmx_test_inline_asm_gcc_x86(GMX_X86_GCC_INLINE_ASM)
 gmx_test_inline_asm_msvc_x86(GMX_X86_MSVC_INLINE_ASM)
 
 # turn on SSE if supported with reasonable defaults.
-if (${GMX_ACCELERATION} STREQUAL "auto")
+if (${GMX_ACCELERATION} STREQUAL "auto" AND NOT GMX_OPENMM)
   if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(i.86|x86|x64|x86_64|AMD64|amd64)")
 
     set(GMX_ACCELERATION "SSE" CACHE STRING "Accelerated kernels. Pick one of: none, SSE, BlueGene, Power6, ia64, altivec" FORCE)
@@ -388,7 +393,7 @@ if (${GMX_ACCELERATION} STREQUAL "auto")
   else()
     set(GMX_ACCELERATION "none" CACHE STRING "Accelerated kernels. Pick one of: none, SSE, BlueGene, Power6, ia64, altivec" FORCE)
   endif()
-endif (${GMX_ACCELERATION} STREQUAL "auto")
+endif (${GMX_ACCELERATION} STREQUAL "auto" AND NOT GMX_OPENMM)
 
 
 include(gmxTestXDR)
index 636a96ec50678797f9ecdb79ad42fc2cc2bb5d11..616bbbf854fb4c03c2c32ce68ebd07827b88102a 100644 (file)
@@ -10,9 +10,15 @@ if (FFTW3_INCLUDE_DIR AND FFTW3_LIBRARIES)
   set (FFTW3_FIND_QUIETLY TRUE)
 endif (FFTW3_INCLUDE_DIR AND FFTW3_LIBRARIES)
 
-find_path (FFTW3_INCLUDE_DIR fftw3.h)
+find_path (FFTW3_INCLUDE_DIR fftw3.h
+               CACHE STRING "Path to headers for double precision FFTW3")
+
+
+find_library (FFTW3_LIBRARIES 
+               NAMES fftw3
+               PATHS "${FFTW3_INCLUDE_DIR}/../lib"
+               CACHE STRING "Double precision FFTW3 libraries")
 
-find_library (FFTW3_LIBRARIES NAMES fftw3)
 
 # handle the QUIETLY and REQUIRED arguments and set FFTW_FOUND to TRUE if
 # all listed variables are TRUE
index 5ca2fc3e30be5870c79714d2debf6729b858df5f..23050153ad1d39f04a70c013b62b79601ab21c00 100644 (file)
@@ -5,14 +5,18 @@
 #  FFTW3F_LIBRARIES   - List of libraries when using FFTW.
 #  FFTW3F_FOUND       - True if FFTW found.
 
-if (FFTW3F_INCLUDE_DIR)
+if (FFTW3F_INCLUDE_DIR AND FFTW3F_LIBRARIES)
   # Already in cache, be silent
   set (FFTW3F_FIND_QUIETLY TRUE)
-endif (FFTW3F_INCLUDE_DIR)
+endif (FFTW3F_INCLUDE_DIR AND FFTW3F_LIBRARIES)
 
-find_path (FFTW3F_INCLUDE_DIR fftw3.h)
+find_path (FFTW3F_INCLUDE_DIR fftw3.h 
+       CACHE STRING "Path to headers for single precision FFTW3")
 
-find_library (FFTW3F_LIBRARIES NAMES fftw3f)
+find_library (FFTW3F_LIBRARIES 
+               NAMES fftw3f
+               PATHS "${FFTW3F_INCLUDE_DIR}/../lib"
+               CACHE STRING "Single precision FFTW3 libraries")
 
 # handle the QUIETLY and REQUIRED arguments and set FFTW_FOUND to TRUE if
 # all listed variables are TRUE
index ac9cd2aceae2539366ec5c60ba5bfdbc9252b3ac..03a5cba0d6bc3427e3eacc1841048b0d28cef83e 100644 (file)
@@ -87,6 +87,8 @@ if(GMX_FAHCORE)
     list(REMOVE_ITEM GMXLIB_SOURCES ${SELECTION_TEST})
 endif(GMX_FAHCORE)
 
+# only fiddle with assembly kernels if we're not doing OpenMM build
+if(NOT GMX_OPENMM) 
 if(GMX_ASM_USEASM-NASM)
   enable_language(ASM-NASM)
 
@@ -114,6 +116,7 @@ else(GMX_ASM_USEASM-NASM)
   endif()
 
 endif(GMX_ASM_USEASM-NASM)
+endif(NOT GMX_OPENMM)
 
 add_library(gmx ${GMXLIB_SOURCES} ${BLAS_SOURCES} ${LAPACK_SOURCES} ${GMX_SSEKERNEL_C_SRC} ${GMX_SSEKERNEL_ASM_SRC} ${THREAD_MPI_SRC})
 target_link_libraries(gmx ${GMX_EXTRA_LIBRARIES}  ${THREAD_LIB})
index 3ed2c01360ecc164ebb0031f149b43a3b92269fd..e643322407070c25ec438cb853e3d946c7300b93 100644 (file)
@@ -1284,14 +1284,13 @@ void* openmm_init(FILE *fplog, const char *platformOptStr,
             }
 
             /* For now this is just to double-check if OpenMM selected the GPU we wanted,
-            but when we'll let OpenMM select the GPU automatically, it will query the devideId.
+            but when we'll let OpenMM select the GPU automatically, it will query the deviceId.
             */            
             if (tmp != devId)
             {
                 gmx_fatal(FARGS, "Internal error: OpenMM is using device #%d"
                         "while initialized for device #%d", tmp, devId);
             }        
-            cout << ">>>>> OpenMM devId=" << tmp << endl;
             
             /* check GPU compatibility */
             char gpuname[STRLEN];