无法使用cuda-gdb启动CUPTI调用程序

时间:2017-12-06 17:37:07

标签: callback cuda cuda-gdb

我有这个奇怪的问题:我有一个程序使用CUPTI callbackAPI来监视程序中的内核。它直接启动时运行良好;但当我把它放在cuda-gdb下并运行时,它失败并出现以下错误:

错误:函数cuptiSubscribe(& subscriber,CUpti_CallbackFunc)my_callback,NULL)失败,错误为CUPTI_ERROR_NOT_INITIALIZED

我已尝试过CUPTI /示例中的所有示例,并得出结论认为使用callbackAPI和activityAPI的程序将在cuda-gdb下失败。 (他们都表现良好,没有cuda-gdb)但失败的原因有所不同: 如果我有来自activityAPI的调用,那么一旦在cuda-gdb下运行它,它会挂起一分钟然后退出并显示错误:

CUDA驱动程序遇到内部错误。错误代码:0x100ff00000001c进一步执行或调试不可靠。请确保使用write和exec权限挂载临时目录。

如果我像我自己的程序那样接到来自callbackAPI的电话,那么它会因为同样的错误而早早失败:

CUPTI_ERROR_NOT_INITIALIZED

有关这类问题的经验吗?我真的很感激!

1 个答案:

答案 0 :(得分:0)

根据NVIDIA论坛发布here并提及here,必须使用唯一的CUDA“工具”。这些工具包括:

  • CUPTI
  • 任何探查者
  • CUDA的MEMCHECK
  • 调试程序

一次只能在代码中“使用”其中一个。开发人员应该相当容易地使用分析器或cuda-memcheck或独立的调试器,但对于那些使用CUPTI的人来说可能是一个可能性,他们也希望能够在同一代码上使用另一个CUDA“工具”。 ,当他们希望使用其他工具时,将提供一种编码方法,以便能够在他们的应用程序中禁用CUPTI。