如何使用cmake编译C++文件和CUDA文件



我知道如何使用cmake编译带有cuda函数的C++文件,比如cublas。然而,在我的项目中,有一个内核函数是我自己编写的。我看到g++编译器不知道如何处理内核<lt<,>>。你能帮我解决这个问题吗?以下是我用来用cublas编译C++文件的CMakeLists。

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_CXX_FLAGS_DEBUG "-g")
cmake_minimum_required(VERSION 3.0)
project(GPU_LMM)
find_package(GSL REQUIRED)
find_package(BLAS REQUIRED)
find_package(CUDA)
if (CUDA_FOUND)
message("CUDA found")
else()
message("CUDA not found, doing something alternatively")
endif()
include_directories(test_cuda PRIVARE
${GSL_INCLUDE_DIRS}
${BLAS_INCLUDE_DIRS}
${CUDA_INCLUDE_DIRS}
${CUDA_CUBLAS_DIRS}
${PROJECT_SOURCE_DIR})
add_executable(GPU_LMM main.cpp aux.cpp)
target_link_libraries( GPU_LMM  PRIVATE
${GSL_LIBRARY}
${BLAS_LIBRARIES}
${CUDA_LIBRARIES}
${CUDA_CUBLAS_LIBRARIES})

我有三个文件要编译如下。

main.cpp aux.cpp aux.hpp

aux.cpp包含cuda内核函数。谢谢大家!

如果您有必须使用nvcc编译的cuda内核,那么它们的扩展名应该是.cu,而不是.cpp(因此应该是aux.cu(。然后cmake将为正确的文件使用正确的编译器。

由于cmake 3.10.0,CUDA支持甚至是原生的,您只需要激活该语言。

相关内容

最新更新