當GPU顯存不夠時會發生什麼事?

當GPU顯存不夠時會發生什麼事?

假設我有一個內存為 1GB 的 GPU,但我的應用程式需要 2GB 的顯示卡內存,當我運行該程式時會發生什麼?應用程式是否從 RAM 中獲取記憶體?顯存不足如何處理?

由於某種原因,我仍然能夠運行該應用程序,並注意到該進程system.exe佔用了大量內存(~800 MB),不確定這是否與視頻內存不足有關或存在其他問題。

答案1

現代 GPU 將運行混合模式,其中驅動程式/GPU 開始透過 PCIe 總線從系統 RAM 傳輸紋理數據,以彌補「缺少」的 RAM。由於系統 RAM 比 GDDR5 慢 3-5 倍,且延遲更高,因此耗盡「VRAM」將導致應用程式變慢並導致 FPS 顯著損失。

然而,效能將受到 PCIe 頻寬 (6 GB/s) 的限制。

使用 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,它可能會以意想不到的方式運行。

應用程式是否從 RAM 中獲取記憶體?

如果應用程式需要 2GB VRAM,那麼擁有更多的系統記憶體並不會真正有幫助,除非應用程式的設計就是這樣做的。

顯存不足如何處理?

這完全取決於應用程式作者選擇實現的實現。

相關內容