cuda和cudamalloc分配大块内存失败



我有一个GTX570,内存为2Gb,当我试图用一个cudamalloc调用分配超过804Mb的内存时,我会遇到麻烦。有人知道为什么会这样吗?这是我的第一个电话,所以我怀疑这是分裂。

没有问题:

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 )

对于桌面窗口,PAGING_BUFFER_SEGMENT_SIZE大约为2Gb IIRC。你有两个选择来解决这个问题:

  1. 获取Telsa卡并使用专用的Windows TCC模式驱动程序,该驱动程序将设备的内存管理从WDDM中删除,从而消除了限制
  2. 为您的GPU计算安装linux或使用CUDA实时分发。Linux驱动程序对超出设备可用内存容量的内存分配没有任何限制

相关内容

  • 没有找到相关文章

最新更新