Sto cercando un modo affidabile per determinare l'utilizzo corrente della memoria GPU preferibilmente in C++/C. Ho trovato molti modi per ottenere l'utilizzo, come i seguenti metodi:Utilizzo progressivo della memoria della GPU
- diretto Disegna
- DxDiag
- WMI
- DXGI
- D3D9
Questi metodi non sono sufficientemente accurati (più di un centinaio di megabyte). Ho provato nvapi.h
ma non ho visto nulla che potrei usare per interrogare per memoria. Stavo pensando solo i metodi sopra elencati erano le uniche opzioni, ma poi mi sono imbattuto in uno strumento chiamato GPU-Z
che mi dà letture accurate della memoria al megabyte più vicino anche quando OpenCL gira quasi a pieno carico sul mio 580GTX. Posso verificare che sono al massimo dell'utilizzo della memoria allocando qualche altro megabyte prima che OpenCL restituisca il codice di ritorno Object_Allocation fail
.
Guardando le importazioni da GPU-Z, non vedo nulla di interessante che non sia:
kernel32.dll: LoadLibraryA, GetProcAddress, VirtualAlloc, VirtualFree
La mia ipotesi è LoadLibraryA
deve essere utilizzato caricare una DLL per interrogare la memoria e i sensori della GPU. Se questa DLL esiste, dove vive? Sto cercando una soluzione per AMD e NVidia se possibile (usare API diverse è ok).
"più fuori le mie cento megabyte" - qual è il noto buon riferimento che si sta utilizzando? –
Sto usando GPU-Z come mio riferimento poiché mi dà la precisione di cui ho bisogno. – roboto1986
E cosa ti dà fiducia che GPU-Z sia giusto dove gli altri si sbagliano? –