我有一个使用-O
构建良好的C ++ Cuda工具包v9.2应用程序,但是如果我使用-g -G
进行构建,则在运行时会收到cuda错误7:
请求启动的资源过多
我了解from here的意思是:
超过了多处理器上可用的寄存器数量。减少每个块的线程数以解决该问题。
我不想减少每个块的线程数,因为它可以优化工作。我应该怎么做才能使调试版本使用更少的寄存器,更多地使用优化寄存器?如何跟踪应用程序中多余的寄存器用途?
答案 0 :(得分:1)
正如上面的评论中所述,由于各种原因,调试版本通常需要更多资源。
您可以使用--maxrregcount
选项或__launch_bounds__
qualifier来设置允许编译器使用多少寄存器的限制。请注意,旋转此旋钮实际上仅意味着将一种资源换为另一种资源。强迫编译器使用较少的寄存器通常意味着必须溢出更多的寄存器。更多的溢出通常将意味着增加本地内存需求。在极端情况下,您可能会遇到另一个限制…