【问题标题】:CUDA 5 NSIGHT set compilation flagCUDA 5 NSIGHT 设置编译标志
【发布时间】:2023-03-28 08:09:01
【问题描述】:

为了为 Kepler K20 编译项目,我们需要设置 -rdc=true 标志。我们如何在 nsight eclipse 版中设置这个标志?我的版本是 CUDA 5.K20。 nsight eclipse版

【问题讨论】:

  • 开普勒不需要-rdc=true。您确实需要-arch=sm_35(对于 K20),但 Nsight EE 可以通过项目属性页面自动为您设置。 -rdc=true 是某些类型的项目结构(库、增量编译等)所必需的,除了链接步骤中的 -rdc=true 之外,您还需要 -dc 而不是 -c -对象步骤。 Nsight EE 的项目类型也可以根据您的项目类型自动为您处理。
  • 当我没有提到rdc=true 时,编译过程抛出了错误,比如未定义的缓冲区引用..
  • 是的,同意,但这是因为您的项目的结构方式。这不是 Kepler K20 的要求。
  • 我只有一个文件..没什么花哨的..仍然显示错误,程序正在使用 nsight EE 之外的命令编译,但不在 EE 中。
  • 如果您仍然遇到问题,也许您应该发布一个简单、完整的示例代码来显示问题,以及您设置 Nsight EE 项目所经历的步骤。如果您的整个程序只是一个文件,则不需要 -rdc 标志。您可能没有在 Nsight EE 中选择方便的项目类型。您也可以通过将 Nsight EE 使用的编译命令行与您手动使用的编译命令行进行比较来弄清楚。

标签: cuda nsight


【解决方案1】:

在 Nsight Eclipse Edition 中启用单独编译:

  1. 打开项目属性
  2. 在左侧树中,选择“Build”/“CUDA”
  3. 选择页面顶部的“单独编译”单选按钮。
  4. 清理项目并重建。

这样,Nsight 将为编译器和链接器指定 -rdc=true。

【讨论】:

    【解决方案2】:

    对于像-rdc 这样的附加选项,您可以直接在编译器设置的命令行中添加它们。

    在你看来,

    项目菜单->属性->构建->设置->工具设置->NVCC编译器

    -rdc=true附加到“Command”字符串或“Command line pattern”字符串中

    您可能还需要将此选项附加到 NVCC 链接器命令。

    【讨论】:

    • 谢谢..它构建正确,但现在它的链接器显示错误..未定义引用`__cudaRegisterLinkedBinary_39_tmpxft_000023b3_00000000_6_Kernel_cpp1_ii_51e07f2f'。我按照 nvidia 手册将 -lcudadevrt 添加到 nvcc 链接器。
    猜你喜欢
    • 2016-11-26
    • 2013-01-02
    • 1970-01-01
    • 2016-12-17
    • 2021-02-27
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    相关资源
    最近更新 更多