gpt4 book ai didi

assertion - CUDA:如何在内核代码中断言?

转载 作者:行者123 更新时间:2023-12-02 21:54:18 25 4
gpt4 key购买 nike

CUDA 内核代码中断言的等效技术是什么?

似乎没有 CUDA 内核代码的断言。我想要一种在内核代码中轻松捕获程序员错误的方法。一种机制,我可以设置需要为真的条件,并且当条件为假时内核应该退出并显示错误消息。

最佳答案

对于 cc 2.x 或更高版本的设备,assertionvoid assert(int expression),可以在内核中使用,这样一旦调用主机同步函数,表达式== 0的线程就会向stderr发送消息。

对于其他情况或无法使用断言时(例如在 MacOS 上),您将无法从内核向主机返回错误消息或错误代码。

相反,我会设置一个错误状态并从主机检查它。使用设备全局内存或(更好的)映射主机内存来存储错误状态,作为参数传递给每个内核调用。在内核中使用if语句,如果语句失败,则设置错误代码并返回。内核调用后,您将能够从主机检查错误代码,但请记住,在检查错误代码之前,您将在内核启动后同步主机和设备。我想这对于开发来说效果很好,但对于生产来说就不太好了。

关于直接从设备打印错误消息

  • 在 1.x、2.x 和 3.0 卡中,您可以使用仿真模式打印错误消息。
  • 在 3.1 版本中(在 fermi 上),显然您可以在内核中使用 printf 来打印错误消息。看起来它并不总是立即起作用,例如http://forums.nvidia.com/index.php?showtopic=182448

关于assertion - CUDA:如何在内核代码中断言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5114449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com