儘管沒有超出可用內存,是否對設備內存分配有任何限制?根據cuMemGetInfo有超過200MB左cudaMalloc和「內存不足」問題
cudaSafeCall() Runtime API error : out of memory.
然而,: 我在嘗試分配64MB後,下面的錯誤。
下面是場景:
size_t size = 4096 * 4096 * sizeof (float);
cuMemGetInfo(&fr, &ttl); // fr indicates 284 MB
cutilSafeCall(cudaMalloc((void**) &tmp, size));
p1 = tmp;
cuMemGetInfo(&fr, &ttl); // fr indicates 220 MB
cutilSafeCall(cudaMalloc((void**) &tmp, size)); // this fails !!!
p2 = tmp;
我缺少什麼?
我使用:
Cuda compilation tools, release 3.2, V0.2.1221
NVidia Driver 260.19.26
Linux(Slackware) x86
更新:
此行爲是相當不確定的。時不時會成功,我得到正確的結果,沒有任何錯誤。
內存碎片?你可以分配兩個32 MB的塊,或四個16 MB的塊,或...? – Thomas 2011-01-20 17:24:11
你可能是對的先生。我能夠達到分配300 * 1MB塊的8MB空閒內存。請將您的評論轉換爲答案,以便我可以接受它。 – Kylo 2011-01-20 19:01:10