Was passiert, wenn der GPU-Speicher nicht ausreicht?

Was passiert, wenn der GPU-Speicher nicht ausreicht?

Angenommen, ich habe eine GPU mit 1 GB Speicher, aber meine Anwendung benötigt 2 GB Grafikkartenspeicher. Was passiert, wenn ich das Programm ausführe? Nimmt die Anwendung den Speicher aus dem RAM? Wie geht sie mit dem unzureichenden Videospeicher um?

Aus irgendeinem Grund kann ich die Anwendung immer noch ausführen und habe festgestellt, dass der Vorgang system.exeziemlich viel Speicher benötigt (~800 MB). Ich bin nicht sicher, ob dies mit dem unzureichenden Videospeicher zusammenhängt oder ob ein anderes Problem vorliegt.

Antwort1

Moderne GPUs führen einen Hybridmodus aus, bei dem die Treiber/GPU Texturdaten vom System-RAM über den PCIe-Bus streamen, um den „fehlenden“ RAM auszugleichen. Da System-RAM 3-5 Mal langsamer als GDDR5 ist und eine viel höhere Latenz aufweist, würde ein Mangel an „VRAM“ zu einer langsameren Anwendung und einem erheblichen FPS-Verlust führen.

Die Leistung wird jedoch durch die PCIe-Bandbreite (6 GB/s) begrenzt.

Beim Programmieren mit dem CUDA-Toolkit (v2.2+) nennt man dasNull-Kopie.

Hier ist der Code dafür, für alle, die neugierig sind, wie es funktioniert.

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);

Lesen Sie mehr unter:http://docs.nvidia.com/cuda/cuda-c-best-practices-guide/index.html#ixzz3nEbijjQZ

Antwort2

Was passiert, wenn ich das Programm ausführe?

Dabei werden 100 % des für Ihr System verfügbaren VRAM genutzt. Entweder funktioniert es problemlos, weil es so implementiert wurde, dass auch Ihr Systemspeicher genutzt wird, oder es kann zu unerwartetem Verhalten kommen, weil Sie nicht über genügend VRAM verfügen.

Beansprucht die Anwendung den Speicher vom RAM?

Wenn die Anwendung 2 GB VRAM erfordert, hilft mehr Systemspeicher nicht wirklich, es sei denn, die Anwendung wurde speziell dafür entwickelt.

Wie geht es mit dem unzureichenden Videospeicher um?

Dies hängt ganz von der Implementierung ab, die der Autor der Anwendung auswählen möchte.

verwandte Informationen