Ho un'applicazione che risolve un sistema di equazioni in CUDA, so per certo che ogni thread può trovare fino a 4 soluzioni, ma come posso copiare nuovamente all'host?Come raccogliere in modo efficiente i dati dai thread in CUDA?
Sto passando un enorme array con spazio sufficiente per tutti i thread archiviare 4 soluzioni (4 doppie per ciascuna soluzione) e un'altra con il numero di soluzioni per thread, tuttavia si tratta di una soluzione ingenua, ed è l'attuale collo di bottiglia del mio kernel.
Mi piace davvero ottimizzare questo. Il problema principale è concatenare un numero variabile di soluzioni per thread in un singolo array.
Sarebbe molto più semplice aiutare se sapessi qualcosa di più sul tuo programma. per quanto ne so (è passato circa un anno da quando ho problemi con CUDA, quindi potrei sbagliarmi), le memcopie sono l'unico modo per recuperare le informazioni e sono lente. E quale versione di cuda su quale carta? – 8bitwide
Ho a disposizione un CUDA 4.0 e 4.2. – RSFalcon7
Il codice è troppo grande per inserirlo qui. Sono d'accordo che cudaMemCpy è l'unico modo per ottenere i risultati, ma potrei evitare la copia di rifiuti. – RSFalcon7