Merge changes I930b316c,Iea4283e0,I103648f8 into release-4-6
authorSzilárd Páll <pszilard@kth.se>
Thu, 17 Jan 2013 22:18:55 +0000 (23:18 +0100)
committerGerrit Code Review <gerrit@gerrit.gromacs.org>
Thu, 17 Jan 2013 22:18:55 +0000 (23:18 +0100)
* changes:
  BlueGene/Q installation notes
  fixed SD+BD integration slowing down with OpenMP threads
  Run regressiontests from build

cmake/gmxManageGPU.cmake
src/mdlib/nbnxn_cuda/nbnxn_cuda_data_mgmt.cu

index 2ad6661fedab67eac1f46c24152c1df237f97bea..ba3c5b476121c2d6643ab9c861d25e6940d1b25a 100644 (file)
@@ -77,8 +77,8 @@ endif()
 # - OFF, TRUE : Will keep GMX_GPU=OFF if no CUDA is detected, but will assemble
 #               a warning message which will be issued at the end of the
 #               configuration if GPU(s) were found in the build system.
-# - ON , FALSE: The user requested GPU builds, will require CUDA and will fail
-#               if it is not available.
+# - ON , FALSE: The user requested GPU build and this requires CUDA, so we will
+#               fail if it is not available.
 # - ON , TRUE : Can't happen (GMX_GPU=ON can only be user-set at this point)
 if((GMX_GPU OR GMX_GPU_AUTO) AND NOT GMX_GPU_DETECTION_DONE)
     if (EXISTS ${CUDA_TOOLKIT_ROOT_DIR})
@@ -111,9 +111,9 @@ if((GMX_GPU OR GMX_GPU_AUTO) AND NOT GMX_GPU_DETECTION_DONE)
 
         set(CUDA_NOTFOUND_MESSAGE "
     mdrun supports native GPU acceleration on NVIDIA hardware with compute
-    capability >=2.0. This requires the NVIDIA CUDA library, which was not
-    found; the location can be hinted by setting CUDA_TOOLKIT_ROOT_DIR as
-    a CMake option (It does not work as an environment variable).
+    capability >=2.0 (Fermi or later). This requires the NVIDIA CUDA toolkit,
+    which was not found. Its location can be hinted by setting the
+    CUDA_TOOLKIT_ROOT_DIR CMake option (does not work as an environment variable).
     The typical location would be /usr/local/cuda[-version].
     Note that CPU or GPU acceleration can be selected at runtime!
 
@@ -123,7 +123,7 @@ if((GMX_GPU OR GMX_GPU_AUTO) AND NOT GMX_GPU_DETECTION_DONE)
     if (NOT CUDA_FOUND)
         if (GMX_GPU_AUTO)
             # Disable GPU acceleration in auto mode
-            message(STATUS "Disabling native GPU acceleration")
+            message(STATUS "No compatible CUDA toolkit found (v3.2+), disabling native GPU acceleration")
             set_property(CACHE GMX_GPU PROPERTY VALUE OFF)
             set(CUDA_NOTFOUND_AUTO ON)
         else ()
@@ -161,7 +161,7 @@ macro(gmx_gpu_setup)
     if(NOT GMX_OPENMP)
         message(WARNING "
     To use GPU acceleration efficiently, mdrun requires OpenMP multi-threading.
-    With no OpenMP a single CPU core can be used with a GPU which is not optimal.
+    Without OpenMP a single CPU core can be used with a GPU which is not optimal.
     Note that with MPI multiple processes can be forced to use a single GPU, but this
     typically inefficient. Note that you need to set both C and C++ compilers that
     support OpenMP (CC and CXX environment variables, respectively) when using GPUs.")
index ad69c1eac50eac3228a78244cba29bf30db00525..251c6d9c0386fd95371bb3a01256e81c86795e24 100644 (file)
@@ -464,11 +464,11 @@ void nbnxn_cuda_init(FILE *fplog,
      * operations and only works on x86/x86_64.
      * With polling wait event-timing also needs to be disabled.
      *
-     * The overhead is greatly reduced in 304.xx drivers (independent of runtime ver).
-     * The corresponding driver API version (which is what we can query) should
-     * be at least 5.0. Hence we will not switch to polling when >=5.0 is returned.
+     * The overhead is greatly reduced in API v5.0 drivers and the improvement
+     $ is independent of runtime version. Hence, with API v5.0 drivers and later
+     * we won't switch to polling.
      *
-     * NOTE: Unfortunately, this is knonw to fail when GPUs are shared by (t)MPI,
+     * NOTE: Unfortunately, this is known to fail when GPUs are shared by (t)MPI,
      * ranks so we will also disable it in that case.
      */
 
@@ -506,7 +506,7 @@ void nbnxn_cuda_init(FILE *fplog,
             if (bOldDriver && !gpu_info->bDevShare)
             {
                 md_print_warn(fplog,
-                              "NOTE: Using a GPU with ECC enabled and a driver older than 5.0, but\n"
+                              "NOTE: Using a GPU with ECC enabled and CUDA driver API version <5.0, but\n"
                               "      cudaStreamSynchronize waiting is forced by the GMX_CUDA_STREAMSYNC env. var.\n");
             }
         }
@@ -524,15 +524,16 @@ void nbnxn_cuda_init(FILE *fplog,
             if (nb->bUseStreamSync)
             {
                 md_print_warn(fplog,
-                              "NOTE: Using a GPU with ECC enabled and CUDA driver version <5.0, will switch to\n"
-                              "      polling wait to avoid performance loss. If you encounter issues, set the\n"
-                              "      GMX_CUDA_STREAMSYNC env. var. to switch back to standard GPU waiting.\n");
+                              "NOTE: Using a GPU with ECC enabled and CUDA driver API version <5.0, known to\n"
+                              "      cause performance loss. Switching to the alternative polling GPU waiting.\n"
+                              "      If you encounter issues, switch back to standard GPU waiting by setting\n"
+                              "      the GMX_CUDA_STREAMSYNC environment variable.\n");
             }
             else if (bOldDriver)
             {
                 /* Tell the user that the ECC+old driver combination can be bad */
                 sprintf(sbuf,
-                        "NOTE: Using a GPU with ECC enabled and driver version <5.0. A bug in this\n"
+                        "NOTE: Using a GPU with ECC enabled and CUDA driver API version <5.0. A bug in this\n"
                         "      driver can cause performance loss.\n"
                         "      However, the polling waiting workaround can not be used because\n%s\n"
                         "      Consider updating the driver or turning ECC off.",