[英]How to use cmake to compile both C++ file and CUDA file
我知道如何使用cmake像cublas這樣的cuda函數來編譯C ++文件。 但是,在我的項目中,有一個我自己編寫的內核函數。 我看到g ++編譯器不知道如何處理內核<<<,>>>。 您能幫我解決這個問題嗎? 以下是我用來用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支持甚至是本地的,您只需要激活該語言即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.