From 2b833f7228a8cfd23ed9f03815c069865dcb9786 Mon Sep 17 00:00:00 2001 From: Mark Abraham Date: Sat, 23 Oct 2010 04:57:04 +1300 Subject: [PATCH] Made GMX_POWERPC_INVSQRT work properly on Power6 and BlueGene --- CMakeLists.txt | 7 +++++++ configure.ac | 4 +++- src/config.h.cmakein | 3 +++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0c2d026f59..0003f37ad5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,6 +81,8 @@ option(GMX_MPI "Build a parallel (message-passing) version of GROMACS" OFF) option(GMX_THREADS "Build a parallel (thread-based) version of GROMACS (cannot be combined with MPI yet)" ON) option(GMX_SOFTWARE_INVSQRT "Use GROMACS software 1/sqrt" ON) mark_as_advanced(GMX_SOFTWARE_INVSQRT) +option(GMX_POWERPC_INVSQRT "Use PowerPC hardware 1/sqrt" ON) +mark_as_advanced(GMX_POWERPC_INVSQRT) option(GMX_FAHCORE "Build a library with mdrun functionality" OFF) mark_as_advanced(GMX_FAHCORE) option(GMX_OPENMM "Accelerated execution on GPUs through the OpenMM library (rerun cmake after changing to see relevant options)" OFF) @@ -150,6 +152,9 @@ endif(GMX_DOUBLE) if(GMX_SOFTWARE_INVSQRT) set(PKG_CFLAGS "${PKG_CFLAGS} -DGMX_SOFTWARE_INVSQRT") endif(GMX_SOFTWARE_INVSQRT) +if(GMX_POWERPC_INVSQRT) + set(PKG_CFLAGS "${PKG_CFLAGS} -DGMX_POWERPC_INVSQRT") +endif(GMX_POWERPC_INVSQRT) ######################################################################## #Process MPI settings @@ -546,6 +551,8 @@ elseif(${GMX_ACCELERATION} STREQUAL "BLUEGENE") set(GMX_BLUEGENE 1) elseif(${GMX_ACCELERATION} STREQUAL "POWER6") set(GMX_POWER6 1) + set(GMX_SOFTWARE_INVSQRT OFF CACHE BOOL "Do not use software reciprocal square root on Power6" FORCE) + set(GMX_POWERPC_INVSQRT ON CACHE BOOL "Use hardware reciprocal square root on Power6" FORCE) elseif(${GMX_ACCELERATION} STREQUAL "IA64") set(GMX_IA64_ASM 1) set(DISABLE_WATERWATER_NLIST 1) diff --git a/configure.ac b/configure.ac index d47e5a60f1..258598aef5 100644 --- a/configure.ac +++ b/configure.ac @@ -174,7 +174,7 @@ AC_ARG_ENABLE(software-invsqrt, [AC_HELP_STRING([--disable-software-invsqrt], [No software 1/sqrt (disabled on sgi,ibm,ia64)])],, [case "${host_cpu}-${host_os}" in - mips*-irix* | rs6000*-aix* | powerpc*-aix | ia64*-*) enable_software_invsqrt=no ;; + mips*-irix* | rs6000*-aix* | powerpc*-aix | powerpc*-none | ia64*-*) enable_software_invsqrt=no ;; *) enable_software_invsqrt=yes ;; esac]) if test "$enable_software_invsqrt" = "yes"; then @@ -1126,6 +1126,8 @@ fi if test "$enable_bluegene" = "yes"; then AC_DEFINE(GMX_BLUEGENE,,[Use assembly intrinsics kernels for BlueGene]) + AC_DEFINE_UNQUOTED(GMX_POWERPC_INVSQRT,,[Use the PowerPC hardware 1/sqrt(x)]) + PKG_CFLAGS="$PKG_CFLAGS -DGMX_POWERPC_INVSQRT" fi if test "$enable_fortran" = "yes"; then diff --git a/src/config.h.cmakein b/src/config.h.cmakein index a8c687baa0..6b51da84d4 100644 --- a/src/config.h.cmakein +++ b/src/config.h.cmakein @@ -146,6 +146,9 @@ /* Use the GROMACS software 1/sqrt(x) */ #cmakedefine GMX_SOFTWARE_INVSQRT +/* Use the PowerPC hardware 1/sqrt(x) */ +#cmakedefine GMX_POWERPC_INVSQRT + /* Compile with dlopen */ #cmakedefine GMX_DLOPEN -- 2.11.4.GIT