Remove individual cuda libraries
authorRoland Schulz <roland@utk.edu>
Mon, 7 Jul 2014 01:14:45 +0000 (21:14 -0400)
committerSzilárd Páll <pall.szilard@gmail.com>
Sun, 27 Jul 2014 18:40:13 +0000 (20:40 +0200)
Instead use CUDA_ADD_LIBRARY to build libgromacs. It builds all
non CUDA files using the standard build rules. Thus this should not
have any effect on non CUDA files. All CUDA files were compiled
with the same nvcc OPTIONS, and thus nothing should have changed
for them either.

This also removes the requirement for gmxManageNvccConfig to set
fPIC manually because now CUDA_ADD_LIBRARY knows when the library
is shared.

Change-Id: I23fe6b7a9766a39c525cdc1abfa3922ec24058d9

cmake/gmxManageNvccConfig.cmake
src/gromacs/CMakeLists.txt
src/gromacs/gmxlib/CMakeLists.txt
src/gromacs/gmxlib/cuda_tools/CMakeLists.txt
src/gromacs/gmxlib/gpu_utils/CMakeLists.txt
src/gromacs/mdlib/CMakeLists.txt
src/gromacs/mdlib/nbnxn_cuda/CMakeLists.txt

index e0a7728221a600049d7990b5f1f8b892ddf952de..33d42ea6991e9d3dbcdb80affc1a84f04dfeab4f 100644 (file)
@@ -131,15 +131,6 @@ if (NOT DEFINED CUDA_NVCC_FLAGS_SET)
         set(CUDA_HOST_COMPILER_OPTIONS "${CUDA_HOST_COMPILER_OPTIONS}-D__STRICT_ANSI__;")
     endif()
 
-    # on Linux we need to add -fPIC when building shared gmx libs
-    # Note: will add -fPIC for any compiler that supports it as it shouldn't hurt
-    if(BUILD_SHARED_LIBS)
-        GMX_TEST_CXXFLAG(CXXFLAG_FPIC "-fPIC" _FPIC_NVCC_FLAG)
-        if(_FPIC_NVCC_FLAG)
-            set(CUDA_HOST_COMPILER_OPTIONS "${CUDA_HOST_COMPILER_OPTIONS}-Xcompiler;${_FPIC_NVCC_FLAG}")
-        endif()
-    endif()
-
     # the legacy CUDA kernels have been dropped, warn with CUDA 4.0
     if (CUDA_VERSION VERSION_EQUAL "4.0")
         message(WARNING "The legacy GPU kernels optimized for older CUDA compilers, including the detected version 4.0, have been removed. To avoid performance loss, we strongly recommend upgrading to a newer CUDA toolkit.
index 3536e4711101a56e67a0782640537408d5150891..a04d1dd0eeaae9d1900f49033d17e59fa1268bcd 100644 (file)
@@ -161,7 +161,14 @@ if(GMX_USE_GCC44_BUG_WORKAROUND)
    gmx_apply_gcc44_bug_workaround("mdlib/constr.c")
 endif()
 
-add_library(libgromacs ${LIBGROMACS_SOURCES})
+if (GMX_GPU)
+    cuda_add_library(libgromacs ${LIBGROMACS_SOURCES}
+            OPTIONS
+            RELWITHDEBINFO -g
+            DEBUG -g -D_DEBUG_=1)
+else()
+    add_library(libgromacs ${LIBGROMACS_SOURCES})
+endif()
 if (GMX_GIT_VERSION_INFO)
     add_dependencies(libgromacs gmx-version)
 endif()
@@ -190,7 +197,6 @@ set_source_files_properties(selection/scanner.cpp PROPERTIES COMPILE_FLAGS "${_s
 
 target_link_libraries(libgromacs
                       ${EXTRAE_LIBRARIES}
-                      ${GMX_GPU_LIBRARIES}
                       ${GMX_EXTRA_LIBRARIES}
                       ${TNG_IO_LIBRARIES}
                       ${FFT_LIBRARIES} ${LINEAR_ALGEBRA_LIBRARIES}
index 5c919622bf1566a9ebb5bbbc66fa2ff32c23b919..991123e37ed23c81c62a8847223cf94bde7c908d 100644 (file)
@@ -45,7 +45,6 @@ if(GMX_GPU)
     # The log file output queries Cuda if GPU support is enabled
     add_subdirectory(cuda_tools)
     add_subdirectory(gpu_utils)
-    set(GMX_GPU_LIBRARIES ${GMX_GPU_LIBRARIES} gpu_utils cuda_tools PARENT_SCOPE)
 endif()
 
 set(GMXLIB_SOURCES ${GMXLIB_SOURCES} ${NONBONDED_SOURCES} PARENT_SCOPE)
index 8bbc24d10ea84b86ee0eee5fff586cf62e4cfeaa..67d2cbe8650e4d9a09a49c2c1107540e051eabe1 100644 (file)
@@ -1,7 +1,7 @@
 #
 # This file is part of the GROMACS molecular simulation package.
 #
-# Copyright (c) 2012, by the GROMACS development team, led by
+# Copyright (c) 2012,2014, by the GROMACS development team, led by
 # Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
 # and including many others, as listed in the AUTHORS file in the
 # top-level source directory and at http://www.gromacs.org.
@@ -34,8 +34,5 @@
 
 if(GMX_GPU)
     file(GLOB CUDA_TOOLS_SOURCES *.cu)
-    CUDA_ADD_LIBRARY(cuda_tools STATIC ${CUDA_TOOLS_SOURCES}
-            OPTIONS
-            RELWITHDEBINFO -g
-            DEBUG -g -D_DEBUG_=1)
+    set(GMXLIB_SOURCES ${GMXLIB_SOURCES} ${CUDA_TOOLS_SOURCES} PARENT_SCOPE)
 endif()
index cfc7eec4b65d8935d809082c7ce8bba91badd41a..dee9b3ee078c3b827e9a4b8f59e6eafcb3256747 100644 (file)
 # To help us fund GROMACS development, we humbly ask that you cite
 # the research papers on the package. Check out http://www.gromacs.org.
 
-CUDA_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
-set(CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE OFF)        
 file(GLOB GPU_UTILS_SOURCES *.cu)
-CUDA_ADD_LIBRARY(gpu_utils STATIC ${GPU_UTILS_SOURCES}
-                 OPTIONS ${_os_def}
-                 RELWITHDEBINFO -g
-                 DEBUG -g -D_DEBUG_=1 )
+set(GMXLIB_SOURCES ${GMXLIB_SOURCES} ${GPU_UTILS_SOURCES} PARENT_SCOPE)
 
-CUDA_BUILD_CLEAN_TARGET()
index 703e8ac32d402fa46d62541724f585bb89ef6bad..fb9cfad823064b57af03ad7f266928f32eb3450b 100644 (file)
@@ -1,7 +1,7 @@
 #
 # This file is part of the GROMACS molecular simulation package.
 #
-# Copyright (c) 2010,2012,2013, by the GROMACS development team, led by
+# Copyright (c) 2010,2012,2013,2014, by the GROMACS development team, led by
 # Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
 # and including many others, as listed in the AUTHORS file in the
 # top-level source directory and at http://www.gromacs.org.
@@ -33,9 +33,9 @@
 # the research papers on the package. Check out http://www.gromacs.org.
 
 file(GLOB MDLIB_SOURCES nbnxn_kernels/simd_4xn/*.c nbnxn_kernels/simd_2xnn/*.c nbnxn_kernels/*.c *.c *.cpp)
-set(MDLIB_SOURCES ${MDLIB_SOURCES} PARENT_SCOPE)
 
 if(GMX_GPU)
     add_subdirectory(nbnxn_cuda)
-    set(GMX_GPU_LIBRARIES ${GMX_GPU_LIBRARIES} nbnxn_cuda PARENT_SCOPE)
 endif()
+
+set(MDLIB_SOURCES ${MDLIB_SOURCES} PARENT_SCOPE)
index 48a0712afa63f2563243dfed0dc680281bcc4d8e..2d5636b865129adf4301a6de1f7044f1ed15cc98 100644 (file)
@@ -1,7 +1,7 @@
 #
 # This file is part of the GROMACS molecular simulation package.
 #
-# Copyright (c) 2012,2013, by the GROMACS development team, led by
+# Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
 # Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
 # and including many others, as listed in the AUTHORS file in the
 # top-level source directory and at http://www.gromacs.org.
 
 if(GMX_GPU)
     file(GLOB CUDA_NB_SOURCES *.cu)
-    CUDA_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
-    CUDA_ADD_LIBRARY(nbnxn_cuda STATIC ${CUDA_NB_SOURCES}
-            OPTIONS
-            RELWITHDEBINFO -g
-            DEBUG -g -D_DEBUG_=1)
-    target_link_libraries(nbnxn_cuda cuda_tools)
+    set(MDLIB_SOURCES ${MDLIB_SOURCES} ${CUDA_NB_SOURCES} PARENT_SCOPE)
 endif()