我正在使用OpenCL进行一些gpu计算,我需要创建一个大小约为5 GB的缓冲区。我的笔记本电脑有一个1.5 GB内存的集成gpu。我试图运行代码,它给出了错误的结果。所以我想这是因为gpu的内存已经满了。我的问题是,当ram已满时,是否有一些“交换空间”(或虚拟内存)可供gpu使用?我知道cpu有这个机制。但我不确定gpu。
答案 0 :(得分:1)
不,它不能(至少在大多数GPU上)。因为GPU通常会使用自己的内存(显卡上的RAM)。
内核中的OpenCL代码也没有malloc
(在内核中)。您将使用clCreateBuffer
答案 1 :(得分:0)
这取决于GPU以及它是否具有MMU和DMA访问主机内存。
带有MMU的GPU可以虚拟化 GPU和主机内存,因此它可以显示为单个地址空间,并通过DMA传输处理物理主机内存访问。我想如果你的GPU具有已经完成的功能;在这种情况下,你的问题很可能在其他地方。