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

时间:2013-06-02 20:53:47

标签: cuda

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

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

1 个答案:

答案 0 :(得分:3)

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

但是要映射超过4G的内存,你需要在64位平台上使用SM 2.x或更高版本。