Xiao.D 2021-03-04 13:07 采纳率: 0%
浏览 434
已结题

如何使用cmake工具构建包含opencl(类c++)和cuda代码的可执行项目

这是一个实践中遇到的问题,关于cmake,涉及opencl和cuda。

我想实现利用cmake构建一个项目,含有opencl和cuda两部分代码。

但是我最后实现的只有opencl部分,cuda部分没有出来。

我通过自己的调试,基本可以排除opencl和cuda代码的问题,opencl代码和cuda代码都单独运行过,正常。应该是cmakelists的问题。但我无法解决,请求帮助,谢谢。

这是tree,其中 main.cpp是opencl代码部分,我是把cuda功能封装,然后在编译opencl是调用cuda模块

功能。

下面是两个CMakeLists

这是编译cuda部分的CMakeLists,即内层。

# CMakeLists.txt for G4CU project

project(gpu)

# required cmake version
cmake_minimum_required(VERSION 2.8)


# packages
find_package(CUDA)

#include_directories ("${PROJECT_SOURCE_DIR}")

# nvcc flags -g for debug
#set(CUDA_NVCC_FLAGS -O3;-G;-g)

#set(CUDA_NVCC_FLAGS -gencode arch=compute_20,code=sm_20;-G;-g)
#set(CUDA_NVCC_FLAGS -gencode arch=compute_52,code=sm_52;-G;-g)

file(GLOB_RECURSE CURRENT_HEADERS  *.h *.hpp *.cuh)
file(GLOB CURRENT_SOURCES  *.cpp *.cu)

source_group("Include" FILES ${CURRENT_HEADERS}) 
source_group("Source" FILES ${CURRENT_SOURCES}) 

cuda_add_library(gpu SHARED ${CURRENT_HEADERS} ${CURRENT_SOURCES})
#cuda_add_library(gpu STATIC ${CURRENT_HEADERS} ${CURRENT_SOURCES})

这是外层CMakeLists,即编译opencl部分,并调用内层编译过的cuda模块,的CMakeLists。

# CMakeLists.txt for G4CU project

project(project)

# required cmake version
cmake_minimum_required(VERSION 2.8)


add_subdirectory(cuda)
set (EXTRA_LIBS ${EXTRA_LIBS} gpu)


ADD_EXECUTABLE(project main.cpp )


target_link_libraries(project  ${EXTRA_LIBS}  /usr/local/cuda/lib64/libOpenCL.so )

这里有所有相关文件链接,文件夹中文件按照tree来的。

链接:https://pan.baidu.com/s/1hByjrzjROHbIxAdtAxeJIg 
提取码:nr1c 
 

我是参考了别人使用cmake混合编译普通c++和cuda的方法,因为opencl是c++的拓展,所以我额外引用了opencl库,这体现在外层的CMakeLists中,可能是这里出了问题。望指教!

  • 写回答

2条回答 默认 最新

  • 歇歇 2021-03-05 12:45
    关注

    在中.vscode/seetings.json,使用数组语法代替指定多个选项。例如,

    {
        "cmake.sourceDirectory": "${workspaceFolder}/llvm",
        "cmake.configureSettings": {
            //...
            "LLVM_TARGETS_TO_BUILD" : ["X86", "NVPTX", "AMDGPU"],
            //...
        }
    }
    评论

报告相同问题?

悬赏问题

  • ¥15 C# P/Invoke的效率问题
  • ¥20 thinkphp适配人大金仓问题
  • ¥20 Oracle替换.dbf文件后无法连接,如何解决?(相关搜索:数据库|死循环)
  • ¥15 数据库数据成问号了,前台查询正常,数据库查询是?号
  • ¥15 算法使用了tf-idf,用手肘图确定k值确定不了,第四轮廓系数又太小才有0.006088746097507285,如何解决?(相关搜索:数据处理)
  • ¥15 彩灯控制电路,会的加我QQ1482956179
  • ¥200 相机拍直接转存到电脑上 立拍立穿无线局域网传
  • ¥15 (关键词-电路设计)
  • ¥15 如何解决MIPS计算是否溢出
  • ¥15 vue中我代理了iframe,iframe却走的是路由,没有显示该显示的网站,这个该如何处理