gpt4 book ai didi

c++ - 如何使用cmake同时编译C++文件和CUDA文件

转载 作者:行者123 更新时间:2023-11-28 01:27:03 30 4
gpt4 key购买 nike

我知道如何使用 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 支持甚至是原生的,您只需要激活语言即可。

关于c++ - 如何使用cmake同时编译C++文件和CUDA文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53279851/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com