From 7a57120e035dfc65a45db772b08cdc91bd74aa3b Mon Sep 17 00:00:00 2001 From: Szilard Pall Date: Tue, 31 Aug 2010 17:20:22 +0200 Subject: [PATCH] Improved option disabling on switching to OpenMM build in a non-clean build tree When switching from CPU->GPU in a non-clean build tree it seems to work fine, a few options are disabled/modified from the default values. However, when doings GPU->CPU switch, the code builds, but the default values (fftw3, threads, SSE) are not restores and need to be changed manually. --- CMakeLists.txt | 25 +++++++++++++++---------- src/gmxlib/CMakeLists.txt | 3 +++ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e3f3f2e9f2..5d713e2260 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/src/gmxlib/CMakeLists.txt b/src/gmxlib/CMakeLists.txt index ac9cd2acea..03a5cba0d6 100644 --- a/src/gmxlib/CMakeLists.txt +++ b/src/gmxlib/CMakeLists.txt @@ -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}) -- 2.11.4.GIT