
Допустим, у меня есть GPU с памятью 1 ГБ, но моему приложению требуется 2 ГБ памяти видеокарты, что произойдет, когда я запущу программу? Приложение берет память из ОЗУ? Как оно справляется с нехваткой видеопамяти?
По какой-то причине я все еще могу запустить приложение и заметил, что процесс system.exe
занимает довольно много памяти (~800 МБ). Не уверен, связано ли это с нехваткой видеопамяти или есть другая проблема.
решение1
Современные графические процессоры будут работать в гибридном режиме, в котором драйверы/графический процессор начнут потоковую передачу текстурных данных из системной оперативной памяти по шине PCIe, чтобы компенсировать «отсутствующую» оперативную память. Поскольку системная оперативная память в 3-5 раз медленнее, чем GDDR5, с гораздо более высокой задержкой, исчерпание «VRAM» приведет к более медленной работе приложения и значительной потере FPS.
Однако производительность будет ограничена пропускной способностью PCIe (6 ГБ/с).
При программировании с использованием инструментария CUDA (v2.2+) это называетсянулевая копия.
Вот код для тех, кому интересно, как это работает.
float *a_h, *a_map;
cudaGetDeviceProperties(&prop, 0);
if (!prop.canMapHostMemory)
exit(0);
cudaSetDeviceFlags(cudaDeviceMapHost);
cudaHostAlloc(&a_h, nBytes, cudaHostAllocMapped);
cudaHostGetDevicePointer(&a_map, a_h, 0);
kernel<<<gridSize, blockSize>>>(a_map);
Подробнее читайте здесь:http://docs.nvidia.com/cuda/cuda-c-best-practices-guide/index.html#ixzz3nEbijjQZ
решение2
Что произойдет, когда я запущу программу?
Он будет использовать 100% VRAM, доступной вашей системе. Он либо будет работать без проблем, поскольку он был реализован для использования также и вашей системной памяти, либо из-за того, что у вас недостаточно VRAM, он может вести себя непредсказуемым образом.
Приложение использует память из оперативной памяти?
Если приложению требуется 2 ГБ видеопамяти, то наличие большего объема системной памяти не принесет особой пользы, если только приложение не было разработано с учетом этого.
Как он справляется с нехваткой видеопамяти?
Это полностью зависит от варианта реализации, который выберет автор приложения.