Sono principiante nella programmazione parallela. Ho una domanda che potrebbe sembrare sciocca ma non ho avuto una risposta definitiva quando ho cercato su Google.La GPU legge dalla CPU o dalla CPU nella GPU?
Nel calcolo GPU è presente un dispositivo, ad esempio la GPU e l'host, ovvero la CPU. Ho scritto un semplice programma mondiale Hello che assegnerà un po 'di memoria sulla gpu, passerà due parametri (diciamo src [] e dest []) al kernel, copia src string ie Hello world a dest string e ottieni la stringa dest da gpu a il padrone di casa.
La stringa "src" viene letta dalla GPU o la CPU scrive nella GPU? Inoltre, quando torniamo alla stringa da GPU, la GPU sta scrivendo alla CPU o alla CPU che legge dalla GPU?
Nel trasferire i dati avanti e indietro non ci può essere quattro possibilità 1. CPU su GPU - CPU scrive alla GPU - GPU legge modulo CPU 2. GPU per CPU - GPU scrive alla CPU - CPU legge da GPU
Qualcuno può spiegare quali di questi sono possibili e quali no?
Che, tramite vari controller sincronizzati si riduce a DMA (http://en.wikipedia.org/wiki/Direct_memory_access). – Ani
Grazie mille. È bello sapere che la GPU può anche avviare le transazioni. Quindi c'è un modo per sapere chi ha effettivamente avviato le transazioni usando una delle routine di libreria in Opencl? o le routine con cui posso forzare la CPU o la GPU per eseguire la transazione ..? – Nike
Non conosco OpenCL come avrei dovuto; Detto questo, sarei sorpreso se CUDA non ti desse * un * modo * per verificare dove una variabile viveva nello spazio di indirizzi virtuali unificato. Questo tipo di informazioni potrebbe essere utile, anche al di fuori del caso d'uso dei trasferimenti esplicitamente gestiti (che le versioni più recenti dovrebbero ancora supportare). – Patrick87