Come posso sapere quanta memoria della scheda video sto usando?


15

Voglio determinare a livello di programmazione in fase di runtime quanta memoria della scheda video viene utilizzata dal mio programma. In particolare, mi chiedo come farlo su un computer Windows usando OpenGL, ma sono interessato a come farlo anche su altre piattaforme.

So che ci sono utility là fuori che mi mostreranno l'uso della memoria mentre il mio programma è in esecuzione, ma voglio essere in grado di interrogare quelle informazioni dal mio codice.


PS Ho già risposto alla tua domanda, ma questo sarebbe stato più adatto a StackOverflow.com poiché è solo una domanda di programmazione generale. Se la mia risposta non è abbastanza approfondita, sei invitato a ripubblicarla lì e vedere quali risposte danno.
Ricket,

Sono anche su StackOverflow, ma sto ancora imparando il mix di quali domande sono valide qui.
Hitesh,

3
Questa domanda sembra perfettamente soddisfacente qui. Dopo tutto, probabilmente ha ottenuto la risposta di cui aveva bisogno. Vedere questo: meta.gamedev.stackexchange.com/questions/3/...
Tetrade

Risposte:


14

È possibile trovare la memoria video di una scheda Nvidia utilizzando l' estensione NVX_gpu_memory_info o una scheda ATI utilizzando ATI_meminfo . Ecco un frammento di codice che ho trovato che potrebbe farti iniziare.


Tuttavia, Paul Nettle su flipcode si chiede perché si vorrebbe trovare la memoria video disponibile, dicendo :

Il motivo per cui è difficile (e talvolta impossibile) determinare la quantità di memoria video è molto simile ai motivi per cui OpenGL non consente di bloccare il frame buffer e accedervi direttamente.

E continua spiegando, in sostanza, che una "quantità di memoria video" potrebbe in realtà non significare nulla . Concordo con lui sul ragionamento secondo cui, ad esempio, la quantità di memoria "libera" in una macchina Windows Vista / 7 è irrilevante; si spera che non ci sia memoria libera, perché la memoria libera è memoria sprecata. Ma ci sono sempre alcune aree di memoria dedicate alle cache che vengono cancellate da Windows, nel caso in cui un'applicazione ne abbia bisogno.


Alcune grandi risorse. Dovrei avere la possibilità di provarlo tra un paio di giorni.
Hitesh,

+1, i frammenti sono fantastici. Tuttavia, non sono pienamente d'accordo sul fatto che non significhi nulla: è sempre meglio controllare la quantità di memoria piuttosto che lasciare che lo spettacolo del programma fallisca.
Kornel Kisielewicz,

Bene, ma penso che il punto non fosse necessariamente che non dovresti controllare la quantità di memoria, ma che la quantità di memoria non sia un chiaro indicatore di nulla. Quando la scheda esaurisce la memoria, ciò potrebbe significare che fallirà o che i tuoi dati di trama verranno automaticamente scambiati dentro e fuori se necessario. 0 memoria potrebbe non significare in realtà un errore fatale di memoria insufficiente.
Ricket,

1
Personalmente sto pianificando di usarlo come semplice guida per tracciare le perdite e guardare la mia compatibilità hardware. Usando "20mb"? Sì, probabilmente funzionerà su qualsiasi cosa sul mercato oggi. Usando "500mb" su un semplice gioco con una mezza dozzina di trame allocate dinamicamente con molta agitazione? Probabilmente qualcosa è andato storto nella mia raccolta dei rifiuti.
ZorbaTHut,

1
Sfortunatamente le specifiche GL dicono che quando il driver restituisce GL_OUT_OF_MEMORY ora è in una posizione indeterminata, quindi una volta esaurita la memoria sei fondamentalmente SOL Per il gioco non è così male ma per un'app come dire Photoshop che è inaccettabile.
Gman,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.