Memory 调用clGetPlatformIDs后内存使用量大幅增加

Memory 调用clGetPlatformIDs后内存使用量大幅增加,memory,opencl,Memory,Opencl,我正在学习一些关于openCL的知识,我希望这不是一个独特的问题(在谷歌没有发现任何东西,但是…)。当我打电话时: 扁形目 从我的主机程序中,我看到“top”报告的“VIRT”内存使用量突然增加到大约45GB。常驻内存和共享内存的值没有明显变化,我也不完全确定top在这里报告了什么。但是,如果我重复调用运行openCL命令的函数,我会看到“VIRT”内存使用量的一些波动,直到openCL调用失败,并且CL_主机_内存不足。我有32GB的内存,所以这看起来有点荒谬 我在一些在图像堆栈上执行最大强度

我正在学习一些关于openCL的知识,我希望这不是一个独特的问题(在谷歌没有发现任何东西,但是…)。当我打电话时:

扁形目

从我的主机程序中,我看到“top”报告的“VIRT”内存使用量突然增加到大约45GB。常驻内存和共享内存的值没有明显变化,我也不完全确定top在这里报告了什么。但是,如果我重复调用运行openCL命令的函数,我会看到“VIRT”内存使用量的一些波动,直到openCL调用失败,并且CL_主机_内存不足。我有32GB的内存,所以这看起来有点荒谬

我在一些在图像堆栈上执行最大强度投影的代码(C++)中看到了这一点,但在我从Erik Smistad的博客中获得的代码中看到了完全相同的行为

通过GDB运行该示例,对openCL函数的第一次调用与我的代码中的效果相同:

cl_platform_id platform_id = NULL;
cl_uint ret_num_platforms;
cl_int ret = clGetPlatformIDs(1, &platform_id, &ret_num_platforms);
VIRT内存大幅增加(再次达到约45gb)

由于我从未在任何地方看到过类似的情况,我怀疑我的设置可能有点滑稽:

openSUSE 12.1 GeForce GTX 560Ti 1024 MB nvidia-computeG02-295.49-17.1.x86_64 但是CUDA toolkit for openSUSE 11.2从NVIDIA下载,NVIDIA可能期望驱动程序版本为295.41,而不是与openSUSE一起安装的295.49

我希望这里有人也看到过类似的问题,并且对发生的事情有一些想法,或者对去哪里寻找有一些想法。我非常想解决这个问题,因为除了这个问题,它的工作非常好

谢谢


Martin

可能与主机内存不足错误是由我未能释放事件(clReleaseEvent)引起的。我假设在循环中声明的事件在脱离上下文时会被销毁;但是,似乎有必要调用clReleaseEvent。但是,这对top报告的VIRT内存使用没有任何影响。可能是内存使用报告中的错误?