首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用OpenHardwareMonitor NuGet软件包获取VRAM总数

使用OpenHardwareMonitor NuGet软件包获取VRAM总数
EN

Stack Overflow用户
提问于 2018-07-20 03:43:02
回答 1查看 352关注 0票数 0

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

我知道可以通过使用包获得值,但是,我已经尝试了很长一段时间,还没有找到完成任务的具体代码。

我不是在寻找使用任何其他方法获得总VRAM的答案,例如WMI。我只是在用OpenHardwareMonitor寻找答案。

如果你有解决这个问题的方法,我将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-20 04:50:55

问题是NuGet包是从旧版本的代码构建而来的。与此同时,还添加了额外的传感器,包括关于总内存、可用内存和已用内存的详细信息(至少对于NVidea图形处理器)。参见this diff

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

代码语言:javascript
复制
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();

代码语言:javascript
复制
Memory Info

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

因此,通过一些正则表达式魔法,我们可以提取该信息:

代码语言:javascript
复制
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图形处理器实现图形处理器内存信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51430636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档