找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 95|回复: 1

全局静态变量释放cudastream时,报driver shutting down问题?

[复制链接]
发表于 2018-12-25 11:54:06 | 显示全部楼层 |阅读模式
GTC
大家好!
       目前遇到一个问题,有个全局静态类,此类析构函数会调用cudaStreamDestory函数来释放之前create的stream,  然后在main函数退出时就会报driver shutting down错误。 我查找了一些网站,显示像cudaFree、Destory函数不能放在全局里,不知道为什么? cuda文档也没找到相应描述,请大家帮忙解答下,非常感谢。
回复

使用道具 举报

发表于 2018-12-25 13:15:06 | 显示全部楼层
Jetson TX2
这种情况往往发生在:
(1)你已经从main函数返回后,CUDA即将进行自动的销毁化工作的时候。
(2)在普通的main函数,或者它层叠调用的正常其他函数/方法中,但是此时正在进行,例如cudaDeviceReset()之类的操作。

前者往往见于写的不好的用户C++代码,例如某些对象往往在最后才被自动干掉,而在它们的析构方法中,进行了CUDA调用,而此时已经在进行了自动化的CUDA销毁工作了。

后者往往见于多线程的时候,已经有其他线程调用了cudaDeviceReset()之类的(还在进行中),此时另外的线程还当没事一样继续正常调用CUDA。

至于你如何在C++中,可控的在某个实际,能够人工的销毁掉某些对象,从而能激活它们的析构方法,则是另外一个你需要考虑的问题了。我不是C++用户。

屠戮人神
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

快速回复 返回顶部 返回列表