C(Windows)-GPU使用率(负载%)

C(Windows)-GPU使用率(负载%),c,windows,gpu,C,Windows,Gpu,根据互联网上的许多来源,使用D3DKMTQueryStatistics可以获得GPU使用率(load) 我已经成功地从这里通过代码获得了内存信息,只需稍加修改: 但是,我没有找到D3DKMT_QUERYSTATISTICS结构中应该包含GPU使用信息的成员。请查看中的EtpUpdateNodeInformation函数。它查询每个GPU节点的进程统计信息。每个图形卡可以有多个处理节点: queryStatistics.Type = D3DKMT_QUERYSTATISTICS_PROCESS

根据互联网上的许多来源,使用D3DKMTQueryStatistics可以获得GPU使用率(load)

我已经成功地从这里通过代码获得了内存信息,只需稍加修改:


但是,我没有找到D3DKMT_QUERYSTATISTICS结构中应该包含GPU使用信息的成员。

请查看中的
EtpUpdateNodeInformation
函数。它查询每个GPU节点的进程统计信息。每个图形卡可以有多个处理节点:

queryStatistics.Type = D3DKMT_QUERYSTATISTICS_PROCESS_NODE
...
totalRunningTime += queryStatistics.QueryResult.ProcessNodeInformation.RunningTime.QuadPart
...
PhUpdateDelta(&Block->GpuRunningTimeDelta, totalRunningTime);
...
block->GpuNodeUsage = (FLOAT)(block->GpuRunningTimeDelta.Delta / (elapsedTime * EtGpuNodeBitMapBitsSet));

它收集进程运行时间并除以实际时间跨度。

请看。以及周围的对话。它看起来会给你你想要的东西我不是在寻找图形内存的使用,而是图形处理器(load)的使用。(往下读一点,看看例子)我也不确定你是否理解我的问题。我不是在寻找一种优化我的程序GPU的方法。我正在寻找的是一种在其他程序使用GPU时获得GPU使用情况的方法。在这篇原始文章中,没有你提出的任何问题,只有一系列的陈述。利用你对我评论的回复内容,通过编辑一些澄清,来改进你的帖子,使其符合你的需要。说明您试图解决的问题。如果我根据我读到的内容做出了这些错误的假设,其他人也可能会这样做。对不起,我帮不上忙。