Posso usare Thrust :: host_vector o dover usare cudahostalloloc per copia zero con spinta?
Domanda
Voglio usare zero copia sulla memoria mappata da cudaHostGetDevicePointer
.Posso usare thrust::host_vector
o devo usare cudaHostAlloc(...,cudaHostAllocMapped)?
O è in qualche modo più facile da fare con la spinta?
Soluzione
Sono abbastanza sicuro che non sia ancora possibile utilizzare una spinta :: host_vector come allocazione host mappata.C'è un allocatore di memoria appuntato, ma non credo che la memoria mappata sia disponibile.Quello che devi fare è qualcosa del genere:
- .
- Memoria host mappata, appuntata con
cudaHostAlloc
- Ottieni il puntatore del dispositivo per la memoria di copia zero usando
cudaHostGetDevicePointer
- Creare un
thrust::device_ptr
utilizzandothrust::device_pointer_cast
su quel puntatore del dispositivo (vedere qui per ulteriori informazioni)
È possibile creare un thrust::device_vector
utilizzando thrust::device_ptr
o passare a thrust::device_ptr
a qualsiasi algoritmo che accetta un iteratore.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow