cuda和cudamalloc分配大内存块失败
我有一个2Gb内存的GTX570,当我试图通过一个cudamalloc调用分配比804Mb更多的内存时,我遇到了麻烦。有人知道为什么吗?这是我第一次打电话,所以我怀疑这是碎片 没问题:cuda和cudamalloc分配大内存块失败,cuda,malloc,Cuda,Malloc,我有一个2Gb内存的GTX570,当我试图通过一个cudamalloc调用分配比804Mb更多的内存时,我遇到了麻烦。有人知道为什么吗?这是我第一次打电话,所以我怀疑这是碎片 没问题: Memory avaliable: Free: 2336116736, Total: 2684026880 requesting 804913152 bytes no error Memory avaliable: Free: 1531199488, Total: 2684026880 requesting 80
Memory avaliable: Free: 2336116736, Total: 2684026880
requesting 804913152 bytes
no error
Memory avaliable: Free: 1531199488, Total: 2684026880
requesting 804913152 bytes
no error
Memory avaliable: Free: 726286336, Total: 2684026880
问题:
Memory avaliable: Free: 2327601152, Total: 2684026880
requesting 805306368 bytes
out of memory
Memory avaliable: Free: 2327597056, Total: 2684026880
requesting 805306368 bytes
out of memory
Memory avaliable: Free: 2327597056, Total: 2684026880
这是由Windows WDDM子系统施加的限制造成的。可以分配的内存量有一个硬限制,计算如下
MIN ( ( System Memory Size in MB - 512 MB ) / 2, PAGING_BUFFER_SEGMENT_SIZE )
对于桌面窗口,分页缓冲区段大小约为2Gb IIRC。您有两个解决此问题的选项:
发布说明中的“已知问题”一节“Windows”小节第二个项目可能适用:在Windows下使用WDDM驱动程序时,设备分配的最大大小可能会受到系统内存大小的限制。我在Windows 8 x64上运行,内存为12GB,可用空间约为9GB,运行cuda 5。好主意,我也会检查发行说明。嗯,谢谢你指出这一点,看到很多其他人也有同样的问题。然而,拥有大约12GB的系统内存,限制因素应该是分页缓冲区段。如果2GB是一个正确的数字,我的代码应该能够分配比840MB多得多的内存。或者我遗漏了什么?根据公式,应该可以在任何内存超过4.5GB的机器上分配2GB(给定2GB的分页缓冲区\段\大小)。如果你喜欢冒险,你可以将你的卡修改为。