页锁定主机内存分配的最大大小是多少?



我在64位Ubuntu 13.04上运行CUDA 5.0,使用NVIDIA GTS 250,内存为1gb, NVIDIA驱动程序319.17。我在计算中使用的数据集太大,无法装入卡本身,因此我尝试使用cudaHostAlloccudaHostAllocMapped标志在主机系统上分配页锁定内存。我使用的数据大约有18gb,主机有24gb的RAM。我的问题是,每当我尝试分配超过4 GB的页面锁定内存时,在任何数量的块中,我都会得到"内存不足"的错误。使用标准的C malloc,我可以一次分配整个18 GB,但是如果我尝试将其与cudaHostRegister映射,我仍然限制为4 GB。

CUDA中页面锁定分配的最大大小是多少?这是我的系统中的问题,还是由硬件,驱动程序或CUDA版本设置的限制?有没有办法分配这么大的数组,可以为GPU映射?

X类硬件只支持32位寻址。如果移除cudaHostMapped标志(以及cudaSetDeviceFlags()cudaDeviceMapHost标志),您可能能够分配超过4GB的固定内存。这将使您能够使用异步内存副本将数据传入和传出GPU内存。

但是要映射超过4G的内存,您需要使用sm2。

最新更新