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

问题描述 投票:0回答:1

我有一个C ++ Cuda工具包v9.2应用程序可以很好地使用-O构建,但如果我使用-g -G构建,我在运行时得到一个cuda错误7:

要求启动的资源过多

我理解from here这意味着:

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

因为它可以优化,所以我宁愿不减少每个块的线程数。我可以做些什么,对于调试版本,我使用更少的寄存器,更符合优化?如何在我的应用程序中找到额外寄存器的使用位置?

cuda cpu-registers
1个回答
1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.