【问题标题】:Get VRAM Total using OpenHardwareMonitor NuGet package使用 OpenHardwareMonitor NuGet 包获取 VRAM Total
【发布时间】:2018-07-19 19:43:01
【问题描述】:

我目前正在尝试使用 Nuget 包 OpenHardwareMonitor 获取 GPU 总 VRAM 的值。

我知道可以通过使用包来获取价值,但是我尝试了好久,并没有找到完成任务的具体代码。

我不是在寻找使用任何其他方式(例如 WMI)获取总 VRAM 的答案。我只是在寻找使用 OpenHardwareMonitor 的答案。

如果您有解决此问题的方法,将不胜感激!

【问题讨论】:

    标签: c# openhardwaremonitor


    【解决方案1】:

    问题在于 NuGet 包是从旧版本的代码构建的。与此同时,已经添加了额外的传感器,其中包括有关总、可用和已用 GPU 内存的详细信息(至少对于 NVidea GPU 而言)。见this diff

    如果该软件包得到更新,您应该能够在传感器列表中找到内存详细信息:

    var computer = new Computer();
    computer.GPUEnabled = true;
    computer.Open();
    var gpu = computer.Hardware.First(x => x.HardwareType == HardwareType.GpuNvidia);
    var totalVideoRamInMB = gpu.Sensors.First(x => x.Name.Equals("GPU Memory Total")).Value / 1024;
    computer.Close();
    

    在此之前,一种解决方法是从GetReport() 结果中提取内存信息,其中 GPU 内存信息如下所示:

    Memory Info
    
     Value[0]: 2097152
     Value[1]: 2029816
     Value[2]: 0
     Value[3]: 8221004
     Value[4]: 753168
    

    其中Value[0] 是总 GPU 内存,Value[4] 是可用 GPU 内存量(以 kB 为单位)。所以通过一些正则表达式的魔法,我们可以提取这些信息:

    var pattern = @"Memory Info.*Value\[0\]:\s*(?<total>[0-9]+).*Value\[4\]:\s*(?<free>[0-9]+)";
    var computer = new Computer();
    computer.GPUEnabled = true;
    computer.Open();
    var gpu = computer.Hardware.First(x => x.HardwareType == HardwareType.GpuNvidia);
    var report = gpu.GetReport();
    var match = Regex.Match(report, pattern, RegexOptions.Singleline);
    var totalVideoRamInMB = float.Parse(match.Groups["total"].Value) / 1024;
    var freeVideoRamInMB = float.Parse(match.Groups["free"].Value) / 1024;
    computer.Close();
    

    请注意,OpenHardwareMonitor 仅为 NVidea GPU 实现 GPU 内存信息。

    【讨论】:

    • 太棒了!谢谢你!我对声明 var“gpu”的代码行有疑问。 “Hardware.First ....”命令有什么理由吗?我可以使用 foreach 循环让它运行,但我不确定以另一种方式执行它是否有特定目的。
    • 仅作为示例,如果您希望使用多个 GPU,则可以使用 foreach。
    猜你喜欢
    • 1970-01-01
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多