编译时的CUDA设备属性和计算能力

时间:2011-05-18 14:22:10

标签: cuda nvcc ptx compute-capability

假设我有一个代码,允许用户通过threads_per_block来调用内核。然后我想检查一下输入是否有效(例如,对于计算能力CC< = 512,对于CC> 1024 = 2.0,则为1024)。

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

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

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

1 个答案:

答案 0 :(得分:1)

来自nvcc手册:

  

<强> -arch

     

此选项指定的体系结构是编译链在ptx阶段之前采用的体系结构,...

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

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