[英]can a cuda code finish without cudaStreamDestroy()?
提示:本站为国内最大中英文翻译问答网站,提供中英文对照查看,鼠标放在中文字句上可显示英文原文。
在我们的大型代码库中,我发现有多个cudaStreamCreate()
函数。 但是,我在任何地方都找不到cudaStreamDestroy()
。 程序完成后销毁流是否重要,或者不需要担心这一点? 在这方面什么是好的编程实践?
程序完成后销毁流是否重要,或者不需要担心这一点?
运行时 API 将在正常进程终止期间清除进程拥有的上下文分配的所有资源(流、memory、事件等)。 在大多数情况下,没有必要显式销毁流。
虽然 talonmies 的回答是正确的,但销毁您的流和在 CUDA 中创建的其他实体通常仍然很重要:
此外,如果您在完成所有工作后没有同步您的流,那么您可能会遗漏一些错误(以及您最后一点工作的结果); 如果你确实有一个“最后同步”,那通常意味着有机会也摧毁 stream。
最后,如果你使用 C++ 风格的包装器,比如我的,那么当你离开创建它们的 scope 时,流就会被销毁,你不必担心它(但你支付了 stream 销毁 API 调用的开销) .
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.