Memory management gpu的ram已满时是否可以使用交换空间?

Memory management gpu的ram已满时是否可以使用交换空间?,memory-management,opencl,gpgpu,Memory Management,Opencl,Gpgpu,我正在使用OpenCL进行一些gpu计算,我需要创建一个大小约为5GB的缓冲区。我的笔记本电脑有一个1.5 GB ram大小的集成gpu。我试图运行代码,但结果不正确。所以我想这是因为gpu的内存已经满了。我的问题是,当gpu的ram已满时,是否有一些“交换空间”(或虚拟内存)可供gpu使用?我知道cpu有这种机制。但我不确定gpu是否正确 不,它不能(至少在大多数GPU上)。因为GPU通常使用自己的内存(图形卡上的RAM) 另外,内核中的代码不执行任何malloc(内核内部)。您将使用,这取决

我正在使用OpenCL进行一些gpu计算,我需要创建一个大小约为5GB的缓冲区。我的笔记本电脑有一个1.5 GB ram大小的集成gpu。我试图运行代码,但结果不正确。所以我想这是因为gpu的内存已经满了。我的问题是,当gpu的ram已满时,是否有一些“交换空间”(或虚拟内存)可供gpu使用?我知道cpu有这种机制。但我不确定gpu是否正确

不,它不能(至少在大多数GPU上)。因为GPU通常使用自己的内存(图形卡上的RAM)


另外,内核中的代码不执行任何
malloc
(内核内部)。您将使用

,这取决于GPU以及它是否具有对主机内存的MMU和DMA访问权限


带有MMU的GPU可以虚拟化GPU和主机内存,使其显示为单个地址空间,物理主机内存访问由DMA传输处理。我可以想象,如果你的GPU有这样的能力,那就已经完成了;在这种情况下,你的问题很可能在别处

依我看,大多数真正的GPU(特别是外部NVIDIA或AMD/ATI图形卡上的GPU)没有MMU。AMD的APU处理器是个例外。@BasileStarynkevitch:我不是专家;我做了一点调查。我认为
clCreateBuffer
仅限于CL_设备的最大内存分配大小,这比GPU内存大小要小一些。也许这就是他的问题?@Clifford我刚刚检查了我的gpu的CL_设备大小。有趣的是,它返回4GB,这是我笔记本电脑ram的大小。我有一个集成的英特尔虹膜图形卡。操作系统说它只有1.5 GB的视频ram。因此,gpu似乎可以利用全部ram。@andy90:如果主机是32位的,即使使用虚拟内存也无法寻址>4Gb。