在 Linux 上,我曾经确保进程分配的任何资源都会在进程终止后释放。内存被释放,打开的文件描述符被关闭。当我多次循环启动和终止进程时,没有内存泄漏。
最近我开始使用opencl。我了解 opencl 编译器将编译后的内核保存在缓存中。因此,当我运行一个使用相同内核的程序时(或者甚至可能来自运行相同内核的另一个进程的程序),它们不需要再次编译。我猜缓存在设备上。
从这种行为中,我怀疑分配的设备内存也可能被缓存(可能与一个魔术 cookie 相关联以供以后重用或类似的东西),如果它在终止之前没有明确释放。
所以我提出这个问题是为了排除任何这样的怀疑。
内核在 chache 中存活 => 其他内存分配以某种方式存活???