You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过C# WPF获取神经处理单元(NPU)的性能等信息

获取NPU信息的C# WPF实现方案

方法1:使用Windows Runtime API(Windows.AI.MachineLearning)

Windows 10及以上系统提供了专门的AI设备枚举API,可直接获取包括NPU在内的机器学习硬件信息,部分设备还能返回性能指标(如TOPS)。

示例代码:

using Windows.AI.MachineLearning;
using System.Linq;

// 异步枚举所有可用机器学习设备
var devices = await LearningModelDevice.GetAvailableAsync();
foreach (var device in devices)
{
    // 通过设备名称判断是否为NPU
    if (device.Name.Contains("NPU") || device.Name.Contains("Neural"))
    {
        Console.WriteLine($"设备名称: {device.Name}");
        Console.WriteLine($"设备ID: {device.Id}");
        Console.WriteLine($"设备类型: {device.DeviceKind}");
        
        // 尝试获取TOPS性能参数(部分设备支持)
        if (device.Properties.TryGetValue("Microsoft.AI.MachineLearning.DevicePerformanceTops", out var topsValue))
        {
            Console.WriteLine($"运算能力(TOPS): {topsValue}");
        }
    }
}

注意:项目需添加对Windows.winmd的引用,目标框架设置为.NET 6+或.NET Core 3.0+(支持WinRT互操作),WPF项目可直接适配。

方法2:读取系统注册表信息

主流硬件厂商(Intel、AMD等)会将NPU信息写入系统注册表,可通过读取对应路径获取基础信息:

示例代码:

using Microsoft.Win32;

// 读取Intel NPU相关注册表项
var intelKey = Registry.LocalMachine.OpenSubKey(@"HARDWARE\DESCRIPTION\System\CentralProcessor\0");
if (intelKey != null)
{
    var processorName = intelKey.GetValue("ProcessorNameString")?.ToString();
    if (!string.IsNullOrEmpty(processorName) && processorName.Contains("NPU"))
    {
        Console.WriteLine($"Intel NPU信息: {processorName}");
        // 部分型号可通过厂商文档查询额外注册表项获取TOPS数据
    }
}

// 读取AMD NPU相关注册表项
var amdKey = Registry.LocalMachine.OpenSubKey(@"HARDWARE\DESCRIPTION\System\CentralProcessor\0");
if (amdKey != null)
{
    var brandId = amdKey.GetValue("BrandId")?.ToString();
    // 根据BrandId匹配带NPU的型号,再查询对应性能参数
}

注意:注册表路径因厂商和硬件型号存在差异,需针对不同品牌做适配。

方法3:调用厂商官方SDK

若需精准获取官方标定的TOPS等参数,可直接使用硬件厂商提供的专属SDK:

  • Intel:Intel Distribution of OpenVINO Toolkit,提供NPU性能、状态查询API
  • AMD:AMD ROCm SDK,支持AI加速器参数查询
  • Qualcomm:Qualcomm AI Engine Direct SDK,适配移动端及PC端NPU设备

这些SDK大多提供C#绑定,或可通过P/Invoke调用原生接口。

替代方案:解析系统工具输出

如果以上方法无法满足需求,可调用系统自带工具(如msinfo32.exe)生成系统信息文件,再解析其中的NPU相关内容:

using System.Diagnostics;

var process = new Process();
process.StartInfo.FileName = "msinfo32.exe";
process.StartInfo.Arguments = "/nfo C:\\temp\\systeminfo.nfo";
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.Start();
process.WaitForExit();

// 读取生成的nfo文件,查找NPU相关条目并解析

内容的提问来源于stack exchange,提问作者Pason

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 19:12:46