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

时间:2015-04-16 07:07:14

标签: c# gpu

我正在尝试制作一款软件,用于查看有关用户视频图形卡的信息(例如:GPU时钟速度,总线宽度等)。

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

enter image description here

CUDA Toolkit 7代表Nvidia,APP SDK代表AMD

现在我有两个问题:

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

3 个答案:

答案 0 :(得分:8)

也许Win32_VideoController CLASS或GPUinformation Class可以为您提供帮助。

示例:

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"] + "</br>");
            Response.Write("DeviceID  -  " + obj["DeviceID"] + "</br>");
            Response.Write("AdapterRAM  -  " + obj["AdapterRAM"] + "</br>");
            Response.Write("AdapterDACType  -  " + obj["AdapterDACType"] + "</br>");
            Response.Write("Monochrome  -  " + obj["Monochrome"] + "</br>");
            Response.Write("InstalledDisplayDrivers  -  " + obj["InstalledDisplayDrivers"] + "</br>");
            Response.Write("DriverVersion  -  " + obj["DriverVersion"] + "</br>");
            Response.Write("VideoProcessor  -  " + obj["VideoProcessor"] + "</br>");
            Response.Write("VideoArchitecture  -  " + obj["VideoArchitecture"] + "</br>");
            Response.Write("VideoMemoryType  -  " + obj["VideoMemoryType"] + "</br>");
        }
    }
}

您也可以咨询CUDAfy.net图书馆。

答案 1 :(得分:3)

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

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

答案 2 :(得分:3)

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

https://github.com/falahati/NvAPIWrapper

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

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

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

的数组

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

  • 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单元的数量

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