是否有一种简单可靠的方法来获取物理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);
}
}
答案 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作为进程。