获取GPU内存总量?

时间:2016-06-02 20:03:26

标签: c# .net wmi

是否有一种简单可靠的方法来获取物理GPU内存的总量?

我试过这个,但问题是它返回4096MB而我使用的是带有6144MB的GTX 780,所以没有正确显示。

代码:

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 个答案:

答案 0 :(得分:5)

正如MSDN

中所述
  

与Windows显示驱动程序模型(WDDM)不兼容的硬件会为此类的实例返回不准确的属性值。

这就是它返回4gb的原因。

您可以尝试使用CUDAfy.net

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

答案 1 :(得分:0)

有一个名为SharpDX的DirectX包装器。 C ++中有一个可编译的例子 https://code.msdn.microsoft.com/windowsdesktop/DirectX-Video-Memory-ee7d8319 一个 您可以使用Visual Studio中的SharpDX库(来自NuGet包管理器)重新创建代码,或者您可以编译C ++代码并从您的c#代码中调用exe作为进程。