#
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
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
)
# 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
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:
#
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}
${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}")
_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