사용 가능한 메모리를 초과하지 않았지만 장치 메모리를 할당하는 데 대한 제한이 있습니까? 나는 64MB의 할당하려고 후 오류를 다음 얻을 :cudaMalloc 및 "메모리 부족"오류와 관련된 문제
cudaSafeCall() Runtime API error : out of memory.
을하지만, cuMemGetInfo 200메가바이트 왼쪽 이상이에 따라.
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
당신은 아마 맞을 것입니다. 300MB * 1MB 블록을 할당 할 수있는 8MB의 여유 메모리를 확보 할 수있었습니다. 동의 할 수 있도록 답장 해주십시오. – Kylo