首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在C#中获取GPU信息?

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

Stack Overflow用户
提问于 2015-04-16 07:07:14
回答 3查看 27K关注 0票数 14

我试图制作一个软件来检查有关用户视频图形卡的一些信息(比如: GPU时钟速度、总线宽度等等)。

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

CUDA工具包7用于Nvidia,APP SDK用于AMD

现在我有两个问题:

  1. 如何使用C#代码访问这些信息?
  2. CUDA工具包7和APP SDK能帮助解决我的问题吗?如果有,怎么做?
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-16 07:38:04

也许VideoController类或GPUinformation类可以帮助您。

示例:

代码语言:javascript
运行
复制
using System.Management;
 
public partial class Win_Win32_VideoController : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        using (var searcher = new ManagementObjectSearcher("select * from Win32_VideoController"))
        {
            foreach (ManagementObject obj in searcher.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库。

票数 20
EN

Stack Overflow用户

发布于 2017-04-16 19:11:52

您可以使用这个库获得基本信息:

https://github.com/falahati/NvAPIWrapper

目前,它不支持时钟速度或GPU的使用,也不支持传感器信息(temp),但它可以获得总线的宽度,内存,使用的内存和核心。但是,向库中添加新函数有着坚实的基础,因此,您也可以扩展它以满足您的需要,如果您知道需要添加到库中的NVAPI的哪些功能,并且熟悉封送处理的基本知识,则可能在不到一小时或更短的时间内就可以扩展它。

更新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是否属于四路产品线
  • NvAPIWrapper.GPU.PhysicalGPU.MemoryInfo:向您提供有关内存和内存使用情况的所有信息
  • NvAPIWrapper.GPU.PhysicalGPU.PCIIdentifiers:提供有关硬件PCI ids的信息。
  • NvAPIWrapper.GPU.PhysicalGPU.PhysicalFrameBufferSizeNvAPIWrapper.GPU.PhysicalGPU.VirtualFrameBufferSize:获取此GPU以KB为单位的帧缓冲区的大小
  • NvAPIWrapper.GPU.PhysicalGPU.ShaderSubPipeLines:获取GPU着色器SubPipes或SM单元的数量

如果您需要一个特定的函数,您无法在这个版本的库,请随时打开一个问题。

票数 5
EN

Stack Overflow用户

发布于 2015-04-16 07:13:30

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

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

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

https://stackoverflow.com/questions/29667666

复制
相关文章

相似问题

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