2

Допустим, у меня есть графический процессор с памятью 1 ГБ, но моему приложению требуется 2 ГБ памяти видеокарты, что произойдет при запуске программы? Приложение забирает память из оперативной памяти? Как он справляется с недостатком видеопамяти?

По какой-то причине я все еще могу запустить приложение и заметил, что процесс system.exe занимает довольно много памяти (~ 800 МБ), не уверенный, связано ли это с недостатком видеопамяти или есть другая проблема.

2 ответа2

6

Современные графические процессоры будут работать в гибридном режиме, когда драйверы / графические процессоры начнут передавать данные текстуры из системной памяти по шине 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

1

Что произойдет, когда я запустите программу?

Он будет использовать 100% виртуальной памяти, доступной для вашей системы. Он либо будет работать без проблем, потому что он был реализован для использования вашей системной памяти, либо из-за того, что у вас недостаточно VRAM, он может вести себя непредвиденным образом.

Приложение забирает память из оперативной памяти?

Если приложению требуется 2 ГБ видеопамяти, увеличение системной памяти на самом деле не поможет, если приложение не предназначено для этого.

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .