在Linux上我曾经确定无论进程分配什么资源,它们都会在进程终止后释放。释放内存,关闭打开的文件描述符。当我循环启动并多次终止进程时,没有内存泄漏。
最近我开始使用opencl。 我知道opencl-compiler将编译后的内核保存在缓存中。因此,当我运行一个程序使用与之前运行相同的内核(或者甚至可能是来自运行相同内核的另一个进程的那些内核)时,它们不需要再次编译。我猜这个缓存在设备上。
从这种行为来看,我怀疑分配的设备内存可能也会被缓存(如果在终止之前没有明确释放,可能会与魔术cookie相关联,以便以后重用或类似)。
所以我提出这个问题以排除任何这种怀疑。
内核在chache =>中存活其他内存分配以某种方式存活???
答案 0 :(得分:0)
基于此工具,我的简短回答是肯定的http://www.techpowerup.com/gpuz/ 我正在研究设备上的内存泄漏,我注意到当我的进程终止时,内存被释放......大部分时间。如果你有像我这样的内存泄漏,即使在完成该过程后它也可能会徘徊。 可能有用的另一个工具是http://www.gremedy.com/download.php 但它真的很麻烦所以明智地使用它。