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

Sha*_*yar 11 c# gpu

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

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

在此输入图像描述

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

现在我有两个问题:

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

小智 8

也许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"] + "</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>");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您也可以咨询CUDAfy.net库.


Sor*_*ati 5

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

https://github.com/falahati/NvAPIWrapper


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

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

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

现在您可以使用该类的属性检索您想要的信息。

  • 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 Shader SubPipes 或 SM 单元的数量

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

  • 由于Windows有关GPU的信息有限,并且您需要使用制造商提供的驱动程序和API,那么这只是答案的一半。:) (2认同)