为什么-g -G导致Cuda错误7:请求太多的启动资源?

时间:2019-04-04 17:33:43

标签: cuda cpu-registers

我有一个使用-O构建良好的C ++ Cuda工具包v9.2应用程序,但是如果我使用-g -G进行构建,则在运行时会收到cuda错误7:

  

请求启动的资源过多

我了解from here的意思是:

  

超过了多处理器上可用的寄存器数量。减少每个块的线程数以解决该问题。

我不想减少每个块的线程数,因为它可以优化工作。我应该怎么做才能使调试版本使用更少的寄存器,更多地使用优化寄存器?如何跟踪应用程序中多余的寄存器用途?

1 个答案:

答案 0 :(得分:1)

正如上面的评论中所述,由于各种原因,调试版本通常需要更多资源。

您可以使用--maxrregcount选项或__launch_bounds__ qualifier来设置允许编译器使用多少寄存器的限制。请注意,旋转此旋钮实际上仅意味着将一种资源换为另一种资源。强迫编译器使用较少的寄存器通常意味着必须溢出更多的寄存器。更多的溢出通常将意味着增加本地内存需求。在极端情况下,您可能会遇到另一个限制…