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