2010-08-25 11 views
6

Mi piacerebbe sapere quanta memoria libera c'è sul mio dispositivo prima di allocare i buffer. È possibile? So che c'è CL_DEVICE_GLOBAL_MEM_SIZE per la memoria totale e CL_DEVICE_MAX_MEM_ALLOC_SIZE per la dimensione massima di un singolo oggetto, ma vorrei sapere lo stato attuale della memoria.Come si determina la memoria del dispositivo disponibile in OpenCL?

Allo stato attuale, probabilmente dovrò utilizzare estensioni specifiche del fornitore OpenGL.

risposta

2

No, non c'è modo, e non c'è bisogno di saperlo, la memoria GPU può essere virtualizzata e il driver si scambierà la memoria in entrata/uscita dalla GPU quando non è/non è necessaria.

+1

È bello sapere che non c'è modo, ma perché diresti che non ce n'è bisogno? Non voglio scambiare la memoria in entrata/uscita, e visto che sto lavorando anche con GL, non voglio mangiare tutta la memoria di GL. – nullspace

+0

Non ce n'è bisogno perché l'autista se ne prende cura. Le risorse GL sono anche virtualizzate. Lo swapping non è poi così male, semplicemente copierà i dati in VRAM in RAM, e viceversa se necessario. Cosa faresti se scoprissi che non è rimasto abbastanza VRAM? –

+0

Attualmente sta bloccando il sottosistema GL e attende che TDR lo riavvii. È possibile che ciò sia dovuto a un bug nel mio codice, ma l'allocazione di buffer più piccoli lo risolve. Vorrei determinare una dimensione ottimale del buffer. Quindi è più di una cosa preventiva. – nullspace

Problemi correlati