0

假设我有一个代码可以让用户通过threads_per_block调用内核。然后我想检查输入是否有效(例如 <=512 表示计算能力 CC <2.0 和 1024 表示 CC >=2.0)。

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

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

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

4

1 回答 1

1

从 nvcc 手册:

-拱

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

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

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

于 2011-05-18T15:14:01.390 回答