]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Modify CMake for CUDA matrix-free.
authorBruno Turcksin <bruno.turcksin@gmail.com>
Sun, 14 May 2017 02:58:30 +0000 (22:58 -0400)
committerBruno Turcksin <bruno.turcksin@gmail.com>
Sun, 14 May 2017 02:58:30 +0000 (22:58 -0400)
cmake/macros/macro_deal_ii_add_test.cmake
cmake/macros/macro_deal_ii_pickup_tests.cmake
include/CMakeLists.txt
source/base/CMakeLists.txt
source/matrix_free/CMakeLists.txt
tests/run_testsuite.cmake

index 5662338ce3dc0e98561dcea5eb5b3ff4890ab24a..b1dfff8c613f174ebc487e116b39ef47eab5d4b4 100644 (file)
@@ -168,6 +168,15 @@ MACRO(DEAL_II_ADD_TEST _category _test_name _comparison_file)
       #
       IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${_test_name}.cc")
 
+        SET(_source_file "${_test_name}.cc")
+
+        SET(_target ${_test_name}.${_build_lowercase}) # target name
+        SET(_run_args "$<TARGET_FILE:${_target}>") # the command to issue
+
+      ELSEIF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${_test_name}.cu")
+
+        SET(_source_file "${_test_name}.cu")
+
         SET(_target ${_test_name}.${_build_lowercase}) # target name
         SET(_run_args "$<TARGET_FILE:${_target}>") # the command to issue
 
@@ -240,9 +249,14 @@ MACRO(DEAL_II_ADD_TEST _category _test_name _comparison_file)
           OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_target}/interrupt_guard.cc
           COMMAND touch ${CMAKE_CURRENT_BINARY_DIR}/${_target}/interrupt_guard.cc
           )
+        
+        FIND_PACKAGE(CUDA)
+        CUDA_INCLUDE_DIRECTORIES("${DEAL_II_INCLUDE_DIRS}")
+        CUDA_WRAP_SRCS( ${_target} OBJ _generated_files ${_source_file} )
 
         ADD_EXECUTABLE(${_target} EXCLUDE_FROM_ALL
-          ${_test_name}.cc
+          ${_generated_files}
+          ${_source_file}
           ${CMAKE_CURRENT_BINARY_DIR}/${_target}/interrupt_guard.cc
           )
 
index 2bfbd2c4c491c4b799817c6834250dea5d70504f..220399bcf91368e9eaeec6e46a9c1dcdeb3f5b74 100644 (file)
@@ -81,6 +81,9 @@ MACRO(DEAL_II_PICKUP_TESTS)
   # Necessary external interpreters and programs:
   #
 
+  FIND_PACKAGE(CUDA)
+  SET(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -std=c++11 -arch=sm_35)
+
   FIND_PACKAGE(Perl REQUIRED)
 
   FIND_PROGRAM(DIFF_EXECUTABLE
index 436e048d7c9a9bcb9c91788c7904ddbb7d3f2110..9df8bac90aafa1ea89a1e8a60405595120dd2326 100644 (file)
@@ -34,6 +34,14 @@ INSTALL(DIRECTORY deal.II
   FILES_MATCHING PATTERN "*.h"
   )
 
+IF(DEAL_II_WITH_CUDA)
+  INSTALL(DIRECTORY deal.II
+    DESTINATION ${DEAL_II_INCLUDE_RELDIR}
+    COMPONENT library
+    FILES_MATCHING PATTERN "*.cuh"
+    )
+ENDIF()
+
 #
 # and don't forget to install all generated header files, too:
 #
index b2c0efd7865cd03f2fe31d28de74c8ef3c312848..4b8d56ade97c9404e74e94291373b6a335a86505 100644 (file)
@@ -87,6 +87,7 @@ SET(_inst
 
 FILE(GLOB _header
   ${CMAKE_SOURCE_DIR}/include/deal.II/base/*.h
+  ${CMAKE_SOURCE_DIR}/include/deal.II/base/*.cuh
   )
 
 DEAL_II_ADD_LIBRARY(obj_base OBJECT ${_src} ${_header} ${_inst}
index 1558ab49bbce3d3e534612aa48d7e883fa602658..04b9927961652b43ed0f6c9a651b01c6abbec2f8 100644 (file)
@@ -27,5 +27,20 @@ FILE(GLOB _header
   ${CMAKE_SOURCE_DIR}/include/deal.II/matrix_free/*.h
   )
 
+IF(DEAL_II_WITH_CUDA)
+  SET(_src
+    cuda_matrix_free.cu
+    ${_src}
+    )
+  SET(_inst
+    cuda_matrix_free.inst.in
+    ${_inst}
+    )
+  FILE(GLOB _header
+    ${CMAKE_SOURCE_DIR}/include/deal.II/matrix_free/*.cuh
+    ${_header}
+    )
+ENDIF()
+
 DEAL_II_ADD_LIBRARY(obj_matrix_free OBJECT ${_src} ${_header} ${_inst})
 EXPAND_INSTANTIATIONS(obj_matrix_free "${_inst}")
index 4d0b2825edfbfe1bfadc1782118889a5c7b21f6e..42b890a398a1d83a9d72c462fa766af47e0e0647 100644 (file)
@@ -271,7 +271,7 @@ FOREACH(_var ${_variables})
       _var MATCHES "^(DOCUMENTATION|EXAMPLES)" OR
       _var MATCHES "^(ARPACK|BOOST|OPENCASCADE|MUPARSER|HDF5|METIS|MPI)_" OR
       _var MATCHES "^(NETCDF|P4EST|PETSC|SLEPC|THREADS|TBB|TRILINOS)_" OR
-      _var MATCHES "^(UMFPACK|ZLIB|LAPACK|MUPARSER)_" OR
+      _var MATCHES "^(UMFPACK|ZLIB|LAPACK|MUPARSER|CUDA)_" OR
       _var MATCHES "^(CMAKE|DEAL_II)_(C|CXX|Fortran|BUILD)_(COMPILER|FLAGS)" OR
       _var MATCHES "^CMAKE_BUILD_TYPE$" OR
       _var MATCHES "MAKEOPTS" OR

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.