Resources 是否有一个“问题”;对",;完成openCL处理后释放所有资源的方法?

Resources 是否有一个“问题”;对",;完成openCL处理后释放所有资源的方法?,resources,release,opencl,Resources,Release,Opencl,我想简单的方法是重新启动程序,但是有没有一种方法可以在不关闭程序的情况下获得相同的效果?我为分配的内存、上下文和命令队列调用了适当的release语句,但我从不相信任何openCL调用在调用它时都能满足我的需要 例如,在我读取缓冲区之前,创建缓冲区的调用实际上不会创建缓冲区 我很好奇是否有办法强制清理或类似的事情。请告诉我,谢谢。不,OpenCL规范只定义了clRelease*函数来实现这一点。此外,您不需要进行额外的清理,只需对OpenCL对象进行引用计数,因此只有当它们的引用计数达到0时才会

我想简单的方法是重新启动程序,但是有没有一种方法可以在不关闭程序的情况下获得相同的效果?我为分配的内存、上下文和命令队列调用了适当的release语句,但我从不相信任何openCL调用在调用它时都能满足我的需要

例如,在我读取缓冲区之前,创建缓冲区的调用实际上不会创建缓冲区


我很好奇是否有办法强制清理或类似的事情。请告诉我,谢谢。

不,OpenCL规范只定义了clRelease*函数来实现这一点。此外,您不需要进行额外的清理,只需对OpenCL对象进行引用计数,因此只有当它们的引用计数达到0时才会删除它们


我不知道你为什么不相信OpenCL会按照它说的去做。有些实现有点错误,但这应该随着OpenCL实现的成熟而修复。

不,OpenCL规范只定义了clRelease*函数来实现这一点。此外,您不需要进行额外的清理,只需对OpenCL对象进行引用计数,因此只有当它们的引用计数达到0时才会删除它们


我不知道你为什么不相信OpenCL会按照它说的去做。有些实现有点错误,但随着OpenCL实现的成熟,这应该得到修复。

为什么需要这样做?您认为在您发布/解除分配所有内容后,可以进行什么样的额外清理?还有,你在说什么平台?除了CL规范提供的工具之外,不太可能有一种可移植的方法来强制进行更多的清理。为什么需要这样做?您认为在您发布/解除分配所有内容后,可以进行什么样的额外清理?还有,你在说什么平台?不可能有一种可移植的方法来强制执行比CL规范提供的工具更多的清理。确切地说,缓冲区创建的行为是实现的一部分,但释放句柄是明确定义的。确切地说,缓冲区创建的行为是实现的一部分,但是释放句柄是显式定义的。