【问题标题】:CUDA device properties and compute capability when compiling编译时的 CUDA 设备属性和计算能力
【发布时间】:2011-08-28 03:00:36
【问题描述】:

假设我有一个代码可以让用户通过threads_per_block 来调用内核。然后我想检查输入是否有效(例如 =2.0)。

现在我想知道如果我用nvcc -arch=sm_13 编译代码,而我的计算机中有一个CC2.0 显卡,当用户通过threads_per_block == 1024 时会发生什么?这是:

  • 有效输入 - 因为我运行的卡有 CC2.0,或者...
  • 因为我为 CC1.3 编译它而无效?

或者nvcc -arch=sm_13只是意味着CC1.3至少是必要的,但是在更高的CC上运行时,尽管可以使用那些更高的功能?

【问题讨论】:

    标签: cuda nvcc ptx compute-capability


    【解决方案1】:

    来自 nvcc 手册:

    -arch

    此选项指定的架构是编译链假定的架构,直到 ptx 阶段,...

    这意味着它指定了编译器可以使用的 PTX 功能(如特殊指令)。 PTX ISA 未指定每个块的最大线程数,因此此编译器参数与您要解决的问题无关。

    检查threads_per_block是否有效的最佳方法是启动内核并查看是否发生任何错误。

    【讨论】:

    • 好的,谢谢,-arch 选项只指定了所需的最低计算上限。该程序是为...而设计的...但是在使用更高CC时,我也可以使用更高CC的功能,对吗?
    • 是的,当使用更高的CC时,编译器可以使用更低CC中不可用的PTX指令。
    猜你喜欢
    • 2016-05-06
    • 2018-05-03
    • 2016-09-29
    • 1970-01-01
    • 2015-05-10
    相关资源
    最近更新 更多