我正在学习关于openCL的一些事情,并且我正在拥有我希望不是一个独特的问题(谷歌找不到任何东西,但是......)。我打电话的时候:
clGetPlatformIDs
从我的主机程序中我发现“顶部”报告的'VIRT'内存使用量突然增加到大约45 GB。驻留和共享内存的值没有明显变化,我不完全确定这里报告的是什么。但是,如果我反复调用运行openCL命令的函数,我会看到“VIRT”内存使用量出现一些波动,直到openCL调用因CL_OUT_OF_HOST_MEMORY而失败。我有32 GB的内存,所以这看起来有点荒谬。
我在一些代码(C ++)中看到了这一点,它在图像堆栈上执行最大强度投影,但我在Erik Smistad博客的代码中看到完全相同的行为。
http://www.thebigblob.com/getting-started-with-opencl-and-gpu-computing/
通过GDB运行该示例,第一次调用openCL函数与我的代码具有相同的效果:
cl_platform_id platform_id = NULL;
cl_uint ret_num_platforms;
cl_int ret = clGetPlatformIDs(1, &platform_id, &ret_num_platforms);
VIRT内存大量跳跃(再次大约45 GB)。
由于我在任何地方都没有看到这样的东西,我怀疑我的设置可能有些有趣:
openSUSE 12.1 GeForce GTX 560Ti 1024 MB NVIDIA-computeG02-295.49-17.1.x86_64 但是从NVIDIA下载的openSUSE 11.2的CUDA工具包,可能需要驱动程序版本295.41,而不是用openSUSE安装的295.49。
我希望有人在这里看到过类似的问题,并且对于发生了什么有所了解,或者想知道在哪里看。我非常希望能够解决这个问题,因为除了这个问题,它的工作非常好。
感谢,
马丁