【问题标题】:How to force cubin file generation for a higher compute version如何为更高的计算版本强制生成 cubin 文件
【发布时间】:2014-04-24 21:29:48
【问题描述】:

在 CUDA 6.0 提供的示例中,我正在运行以下带有错误输出的编译命令:

foo@foo:/usr/local/cuda-6.0/samples/0_Simple/cdpSimpleQuicksort$ nvcc --cubin -I../../common/inc cdpSimpleQuicksort.cu
nvcc warning : The 'compute_10' and 'sm_10' architectures are deprecated, and may be removed in a future release.
cdpSimpleQuicksort.cu(105): error: calling a __global__ function("cdp_simple_quicksort") from a __global__ function("cdp_simple_quicksort") is only allowed on the compute_35 architecture or above

cdpSimpleQuicksort.cu(114): error: calling a __global__ function("cdp_simple_quicksort") from a __global__ function("cdp_simple_quicksort") is only allowed on the compute_35 architecture or above

2 errors detected in the compilation of "/tmp/tmpxft_0000241a_00000000-6_cdpSimpleQuicksort.cpp1.ii".

然后我将命令更改为这个,但出现了新的失败:

foo@foo:/usr/local/cuda-6.0/samples/0_Simple/cdpSimpleQuicksort$ nvcc --cubin -I../../common/inc -gencode arch=compute_35,code=sm_35 cdpSimpleQuicksort.cu
cdpSimpleQuicksort.cu(105): error: kernel launch from __device__ or __global__ functions requires separate compilation mode

cdpSimpleQuicksort.cu(114): error: kernel launch from __device__ or __global__ functions requires separate compilation mode

2 errors detected in the compilation of "/tmp/tmpxft_000024f3_00000000-6_cdpSimpleQuicksort.cpp1.ii".

这与我使用的机器仅支持 Compute 2.1 并且构建工具阻止我这一事实有关吗?解决方案是什么...我在文档中找不到任何明确处理此错误的内容。

我查看了this 问题,并且...文档链接根本没有帮助。我需要知道如何修改编译命令。

【问题讨论】:

    标签: cuda nvidia nvcc


    【解决方案1】:

    查看cdpSimpleQuicksort 项目附带的makefile。由于 CUDA 动态并行性(本质上是您看到的第二组错误),它显示了编译它所需的一些额外开关。返回并研究该 makefile,看看您是否可以弄清楚如何组合一些带有--cubin 的编译命令。

    读者消化的版本是,这应该编译没有错误:

    nvcc --cubin -rdc=true -I../../common/inc -arch=sm_35 cdpSimpleQuicksort.cu
    

    说了这么多,您应该能够针对您想要的任何类型的目标进行编译,但是您将无法在 cc2.1 架构上运行 cdp 代码。

    cdp documentationhere

    【讨论】:

    • 该命令中唯一的其他标志用于指定主机编译器(不需要...我在cubin之后),64b标志-m64目标文件声明(不需要...我在cubin 之后,然后是-lcudadevrt 标志,这对我没有任何作用。将--cubin 添加到makefile 命令会抱怨多个计算实例。
    • 啊...有一个-dc标志
    • -dc 标志为我炸毁了。询问键/值。我尝试了dc=true 并得到了nvcc fatal : Keywork '-dc' is not defined for option 'generate-code'
    • 试过 rdc: nvcc --cubin -I../../common/inc -gencode -rdc=true arch=code=sm_35 -lcudadevrt cdpSimpleQuicksort.cu 得到了nvcc fatal : Keywork '-rdc' is not defined for option 'generate-code'
    • 这一切都搞砸了。不要将-rdc=true 粘贴在-gencode 开关和-gencode 开关的参数之间。而arch=code=sm_35 是不对的。试试我在答案中列出的命令,或者这个:nvcc --cubin -I../../common/inc -rdc=true -gencode arch=compute_35,code=sm_35 -lcudadevrt cdpSimpleQuicksort.cu
    猜你喜欢
    • 1970-01-01
    • 2020-04-18
    • 2022-06-13
    • 2011-08-12
    • 2020-05-18
    • 1970-01-01
    • 2020-12-16
    • 2021-12-15
    • 1970-01-01
    相关资源
    最近更新 更多