簡體   English   中英

如何使用cmake編譯C ++文件和CUDA文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM