2016-06-02 3 views
8

Gibt es eine einfache und zuverlässige Möglichkeit, die Gesamtmenge des physischen GPU-Speichers zu erhalten?Erhalten Sie die Gesamtmenge an GPU-Speicher?

Ich habe das versucht, aber das Problem ist, gibt es 4096MB zurück und ich benutze eine GTX 780 mit 6144MB, also ja nicht korrekt angezeigt.

Code:

using System.Management;   

private void getGpuMem() 
{ 
    ManagementClass c = new ManagementClass("Win32_VideoController"); 
    foreach (ManagementObject o in c.GetInstances()) 
    { 
     string gpuTotalMem = String.Format("{0} ", o["AdapterRam"]); 
     Debug.Write(gpuTotalMem); 
    } 
} 
+2

Wie ich denke 'Win32_VideoController' gibt max 4gb zurück, weil es win32 util ist. – Valentin

+0

nicht sicher, ob Sie in diesem https://msdn.microsoft.com/en-us/library/system.windows.gpuinformation%28v=vs.95%29.aspx?f=255&MSPPError=-2147217396 – techspider

+0

sah Was passiert, wenn Sie mehr als eine GPU haben? – n8wrl

Antwort

4

Wie es in der MSDN

Hardware gesagt wird, die nicht kompatibel mit Windows Display Driver Model (WDDM) liefert ungenaue Eigenschaftswerte für Instanzen dieser Klasse ist .

Deshalb gibt es 4 GB zurück.

können Sie versuchen, CUDAfy.net

GPGPU gpu = CudafyHost.GetDevice(CudafyModes.Target, CudafyModes.DeviceId); 
var c = gpu.GetDeviceProperties(true); 
var p = c.TotalMemory; 
Console.WriteLine(p); 
+0

Wenn ich das ^^ mit CUDAfy probiere bekomme ich eine riesige Nummer: 18446744073709551615 –

+0

@ PatrikFröhler es ist die int64 maximale Anzahl, komisch – Valentin

+0

Wie mache ich "overover ulong TotalMemory" vielleicht das ist das Problem? http://www.hybriddsp.com/portals/0/cudafy/html/40825c56-a74f-9b79-0613-6b6fc4736dd2.htm –

Verwandte Themen