C (Windows) – Utilisation du GPU (charge%)

Selon de nombreuses sources sur Internet, il est possible d’utiliser le GPU (charger) à l’aide de D3DKMTQueryStatistics.

Comment interroger l’utilisation du GPU dans DirectX?

J’ai réussi à obtenir des informations sur la mémoire en utilisant le code d’ici avec de légères modifications: http://processhacker.sourceforge.net/forums/viewtopic.php?t=325#p1338

Cependant, je n’ai pas trouvé de membre de la structure D3DKMT_QUERYSTATISTICS qui devrait contenir des informations concernant l’utilisation du GPU.

Regardez la fonction EtpUpdateNodeInformation dans gpumon.c . Il interroge la statistique de processus par noeud GPU. Il peut y avoir plusieurs nœuds de traitement par carte graphique:

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

Il collecte le temps d’exécution du processus et le divise par intervalle de temps réel.