小编sor*_*iak的帖子

使用cmake构建CUDA对象文件

我得到了以下设置.我将使用CUDA使用MPI和其他Stuff扩展用C++编写的框架.该项目使用cmake进行建设.我想避免使用库来扩展我的cuda源代码文件.之后我想链接这些对象对象文件和其他编译器编译的其他文件.有没有人对hwo有所了解?

我查看了http://code.google.com/p/cudpp/wiki/BuildingCUDPPwithCMake,了解如何使用cmake使用CUDA,但此解决方案也使用了库.

cuda build cmake

16
推荐指数
1
解决办法
2万
查看次数

CUDA 5.0用cmake单独编译库

我的cuda库的构建时间正在增加,所以我认为在CUDA 5.0中引入的单独编译可能对我有所帮助.我无法弄清楚如何用cmake实现单独的编译.我查看了NVCC文档并找到了如何编译设备对象(使用-dc选项)以及如何链接它们(使用-dlink).我尝试使用cmake运行它失败了.我正在使用cmake 2.8.10.2和FindCUDA.cmake主干的头部.然而,我无法找到如何指定应编译哪些文件以及如何将它们链接到库中.特别的语法function(CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS output_file_var cuda_target options object_files source_files) 我不清楚,因为我不知道是什么的output_file_varcuda_target是.在这里我的尝试的不工作结果:

cuda_compile(DEVICEMANAGER_O devicemanager.cu OPTIONS -dc)
cuda_compile(BLUB_O blub.cu OPTIONS -dc)
CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS(TEST_O gpuacceleration
                                          ""  DEVICEMANGER_O BLUB_O)
set(LIB_TYPE SHARED)
#cuda_add_library(gpuacceleration ${LIB_TYPE} 
  #${gpuacc_SRCS} 
  #devicemanager.cu
  # blub.cu
  #DEVICEMANAGER_O
#  TEST_O
#)
Run Code Online (Sandbox Code Playgroud)

有谁知道如何使用cmake编译和链接cuda库?提前致谢.

编辑: 在朋友咨询FindCUDA.cmake的开发人员后,FindCUDA.cmake提供的示例中修复了一个错误(https://gforge.sci.utah.edu/gf/project/findcuda/scmsvn/?action= browse&path =%2F checkout%2Ftrunk%2FFindCuda.html).我现在能够构建这个例子.在我的项目中,我可以根据需要使用以下内容构建库(需要cmake 2.8.10):

set(LIB_TYPE SHARED)
set(CUDA_SEPARABLE_COMPILATION ON)
cuda_add_library(gpuacceleration ${LIB_TYPE} 
 blub.cu
 blab.cu
)
Run Code Online (Sandbox Code Playgroud)

但是: 我无法链接到这个库.当我在没有单独编译的情况下构建lib时,我能够链接它.现在收到以下错误:

 undefined reference to `__cudaRegisterLinkedBinary_53_tmpxft_00005ab4_00000000_6_blub_cpp1_ii_d07d5695'
Run Code Online (Sandbox Code Playgroud)

对于具有接口中使用的功能的每个文件.看似奇怪,因为它建立没有任何警告等任何想法如何使这工作?

编辑: 我终于想出了如何做到这一点.有关详细信息,请参阅@ PHD和我的答案.

cuda compilation cmake

11
推荐指数
2
解决办法
1万
查看次数

cuda 5.0支持的c ++版本

我找不到CUDA 5.0支持哪个版本/哪个c ++概念.我在CUDA 5.0 RC随附的"编程指南"或"参考指南"中找不到任何信息.特别是我想知道CUDA 5.0是否支持C++ 11.有人能指点我到一个地方寻找这些信息吗?

c++ cuda c++11

8
推荐指数
2
解决办法
5398
查看次数

如何存储由std :: unique_ptr给出的抽象类对象的向量?

我有一个循环,我使用一个函数将std :: unique_ptr返回给抽象类的对象.我想通过push_back将这些对象存储到std :: vector中.但由于对象是抽象类型,我得到以下错误:

error: cannot allocate an object of abstract type
Run Code Online (Sandbox Code Playgroud)

为线

  cells.push_back(std::move(*cell));
Run Code Online (Sandbox Code Playgroud)

其中,cell是std::vector抽象类型的类型,并且cell是类型

std::unique_ptr<AbstractType>&& cell
Run Code Online (Sandbox Code Playgroud)

(我实际上传递cell给一个处理程序类)我知道一个人不能实例化一个抽象类型,因为我理解std:move操作符需要以某种方式实例化对象?

任何人都可以帮我解决问题吗?或者函数(不是我的项目部分)是否应该返回一个指向抽象类型对象的唯一指针?

c++ abstract-class stdvector c++11

5
推荐指数
1
解决办法
4019
查看次数

标签 统计

cuda ×3

c++ ×2

c++11 ×2

cmake ×2

abstract-class ×1

build ×1

compilation ×1

stdvector ×1