我审计我的openCL调用代码已经有一段时间了,我没有发现任何内存泄漏。注意,我使用的是JOCL,所以我有一堆JUnit测试。如果我单独运行我的任何测试,或者如果我运行任何测试的4/5,它总是通过,但如果我在我的三个显卡较弱的计算机中的一个上运行所有测试,它总是失败。我认为这一定是一个内存泄漏问题。openCL就是众所周知的漏洞吗?除了在调试器中跟踪我的代码之外,还有更好的方法来查找内存泄漏吗?
我在较弱的机器上得到这个错误。如果我在JUnit测试中增加内存使用量,我也可以在更强大的机器上获得它,如果我将其设置得足够高,这是预期的。当这种情况发生在我较弱的机器上时,如果所有其他测试都在它之前运行,那么它将随机地在小于1MB的GPU内存测试中失败。我使用的是Nvidia的260.19.36驱动程序。
[junit] CL_MEM_OBJECT_ALLOCATION_FAILURE
[junit] org.jocl.CLException: CL_MEM_OBJECT_ALLOCATION_FAILURE发布于 2011-02-02 03:21:55
在处理内存泄漏问题时(不管您的项目中使用了什么框架),最好还是看一些东西。
,
我知道这些是通用的。但当我们怀疑内存泄漏时,它们是我们首先检查的检查表。
发布于 2011-04-21 02:41:43
由于缺少动态内存的概念,OpenCL代码(内核代码)不会给您带来任何内存泄漏。这种效果只能来自JOCL、Java或所用设备的底层供应商库。供应商的库不太可能是原因,但一个新版本的驱动程序和库是一个猜测。
某些类在OpenCL设备上分配内存,而不释放它。您确定在抛出异常的情况下也释放OpenCL内存吗?
https://stackoverflow.com/questions/4865158
复制相似问题