Recentemente ho usato molto la spinta. Ho notato che per usare la spinta, si deve sempre copiare i dati dalla memoria della CPU alla memoria gpu.
Vediamo il seguente esempio:c'è un modo migliore e più veloce per copiare dalla memoria della CPU alla GPU usando la spinta?
int foo(int *foo)
{
host_vector<int> m(foo, foo+ 100000);
device_vector<int> s = m;
}
Io non sono molto sicuro di come funziona il costruttore host_vector
, ma sembra come se fossi la copia dei dati iniziali, provenienti da *foo
, due volte - una volta per il host_vector quando è inizializzato e un'altra volta quando viene inizializzato device_vector
. C'è un modo migliore di copiare da cpu a gpu senza fare una copia di dati intermedia? So che posso usare device_ptr
come wrapper, ma questo non risolve il problema.
grazie!
l'argomento size_t n specifica il numero di elementi nel vettore e non deve essere nel nome del tipo size_t, size_t di solito specifica la lunghezza dei dati in byte. – TripleS