Что происходит, когда памяти графического процессора недостаточно?

Что происходит, когда памяти графического процессора недостаточно?

Допустим, у меня есть 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 ГБ видеопамяти, то наличие большего объема системной памяти не принесет особой пользы, если только приложение не было разработано с учетом этого.

Как он справляется с нехваткой видеопамяти?

Это полностью зависит от варианта реализации, который выберет автор приложения.

Связанный контент