2011-11-08 4 views
6

La mia domanda non riguarda GPGPU. Capisco bene GPGPU e non è quello che sto cercando. Il Sand Bridge di Intel ha presumibilmente alcune funzionalità che consentono di eseguire direttamente calcoli sulla GPU.Caricamento codice su GPU (Intel Sandy Bridge)

È proprio vero?

Il codice che sto pianificando di scrivere sarà in assembly inline (in C). Ci sono istruzioni di assemblaggio che invece di eseguire sulla CPU spingono la roba verso la GPU?

Alcuni relativa documentazione:

Il PDF ha il set di istruzioni.

risposta

2

Rispondere alla prima domanda: No, non è vero.

Cito dalle risorse che avete collegate:

Il Graphics Processing Unit è controllato dalla CPU attraverso un'interfaccia diretta di memoria mappata IO registri, e, indirettamente, analizzando i comandi che la CPU ha messo in memoria. (Capitolo 2.2 dal manuale GPU SB)

Quindi nessuna esecuzione diretta del codice GPU nel contesto della CPU.

Per la seconda domanda: "L'invio di materiale alla GPU" viene eseguito con l'istruzione mov. Target è un registro IO mem-mapped, fonte delle cose che vuoi scrivere. Potrebbe essere necessario inserire alcune istruzioni "sfence" o simili per assicurarsi che non si verifichi un riordino della memoria debole.

+0

Questo sembrerà incredibilmente stupido, ma la parte che hai citato, in quale manuale l'hai trovata? Quindi immagino che quello che devo fare sia effettivamente "mettere quei comandi in memoria" tramite la CPU (?) – user813182

+0

Volume 1, Parte 1: il primo nella pagina che hai collegato. Si utilizza la CPU per posizionare il codice GPU che si desidera eseguire da qualche parte nella memoria. Quasi come caricare un programma in esecuzione per la CPU. – hirschhornsalz

3

Non credo che il set di istruzioni dettagliato nel PDF che hai collegato possa essere utilizzato direttamente da "spazio utente". È ciò che il driver della GPU sul tuo sistema operativo * può usare per implementare interfacce di livello superiore come OpenGL e DirectX.

Per quello che vale, la GPU Sandy Bridge è piuttosto debole. Non supporta OpenCL **, che è una libreria GPGPU standard supportata da ATI/nVidia. Ti consiglio di programmare su quella libreria (su hardware che la supporta), in quanto è molto più portabile (e più facile da usare!) Che provare a programmare sull'interfaccia bare metal che stai guardando.


*: E 'possibile, anche se improbabile, che c'è un'interfaccia diversa di ciò che è descritto in tale formato PDF che viene utilizzato nei driver closed-source di Intel.

**: non è uguale a OpenGL, sebbene sia stato progettato dallo stesso gruppo.

+0

dove hai visto GPU SNB supporta OpenCL? – Bahbar

+0

Il mio errore; non è così. Corretto. – duskwuff