如何在C#中获取GPU信息?

我正在尝试制作一个软件来检查用户video图形卡的一些信息(如:GPU时钟速度,总线宽度等)。

我在TechPowerUp GPU-Z软件中看到了这些信息,以及您可以在下图中看到的一些SDK的名称:

在此处输入图像描述

适用于Nvidia的CUDA工具包7和适用于AMD的APP SDK

现在我有两个问题:

  1. 如何使用C#代码访问此信息?
  2. CUDA Toolkit 7和APP SDK是否有助于解决我的问题? 如果是的话,怎么样?

也许Win32_VideoController CLASS或GPUinformation类可以帮助你。

例:

using System.Management; public partial class Win_Win32_VideoController : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { ManagementObjectSearcher objvide = new ManagementObjectSearcher("select * from Win32_VideoController"); foreach (ManagementObject obj in objvide.Get()) { Response.Write("Name - " + obj["Name"] + ""); Response.Write("DeviceID - " + obj["DeviceID"] + ""); Response.Write("AdapterRAM - " + obj["AdapterRAM"] + ""); Response.Write("AdapterDACType - " + obj["AdapterDACType"] + ""); Response.Write("Monochrome - " + obj["Monochrome"] + ""); Response.Write("InstalledDisplayDrivers - " + obj["InstalledDisplayDrivers"] + ""); Response.Write("DriverVersion - " + obj["DriverVersion"] + ""); Response.Write("VideoProcessor - " + obj["VideoProcessor"] + ""); Response.Write("VideoArchitecture - " + obj["VideoArchitecture"] + ""); Response.Write("VideoMemoryType - " + obj["VideoMemoryType"] + ""); } } } 

您也可以咨询CUDAfy.net库。

我对AMD工具没有任何经验,但我们设法使用了来自C#的NVIDIA的NVAPI( https://developer.nvidia.com/nvapi

我们使用的版本仅作为静态库提供,我们无法p / invoke。 我们最终在C ++ / CLR中创建了一个瘦包装器库,然后我们可以从C#代码中调用它。

您可以使用此库获取基本信息:

https://github.com/falahati/NvAPIWrapper


目前,它不支持时钟速度或GPU使用,也不支持传感器信息(temp),但它可以为您提供总线宽度,内存,已用内存和内核。 但是,为库添加新function有一个坚实的基础,因此,如果您知道需要添加到库中的NVAPI的哪些function,您也可以在不到一小时的时间内扩展它以满足您的需求。而且你熟悉编组的基础知识。

更新2018 :它现在支持GPU时钟信息,温度传感器和使用信息。

但是对于当前可检索的信息,您需要获取所有当前连接的物理GPU的列表。 这可以使用NvAPIWrapper.GPU.PhysicalGPU.GetPhysicalGPUs()静态方法。 此方法返回NvAPIWrapper.GPU.PhysicalGPU的数组。

现在,您可以使用此类的属性检索所需的信息。

  • NvAPIWrapper.GPU.PhysicalGPU.Bios :给你VBIOS版本
  • NvAPIWrapper.GPU.PhysicalGPU.Board :为您提供图形板信息
  • NvAPIWrapper.GPU.PhysicalGPU.BusInfo :获取GPU总线信息
  • NvAPIWrapper.GPU.PhysicalGPU.CUDACores :获取为此GPU定义的核心总数
  • NvAPIWrapper.GPU.PhysicalGPU.CurrentPCIEDownStreamWidth :获取下游PCIE接口使用的PCIE通道数
  • NvAPIWrapper.GPU.PhysicalGPU.FullName :获取GPU全名
  • NvAPIWrapper.GPU.PhysicalGPU.GPUType :表示GPU是集成的还是离散的
  • NvAPIWrapper.GPU.PhysicalGPU.IRQ :获取GPU中断号
  • NvAPIWrapper.GPU.PhysicalGPU.IsQuadro :表示此GPU是否属于Quadro系列产品
  • NvAPIWrapper.GPU.PhysicalGPU.MemoryInfo :提供有关内存和内存使用情况的所有信息
  • NvAPIWrapper.GPU.PhysicalGPU.PCIIdentifiers :提供有关硬件PCI ID的信息
  • NvAPIWrapper.GPU.PhysicalGPU.PhysicalFrameBufferSizeNvAPIWrapper.GPU.PhysicalGPU.VirtualFrameBufferSize :获取此GPU的帧缓冲区大小(KB)
  • NvAPIWrapper.GPU.PhysicalGPU.ShaderSubPipeLines :获取GPU着色器子管道或SM单元的数量

如果您需要在此版本的库中找不到的特定function,请随时打开一个问题。