Posso usare Thrust :: host_vector o dover usare cudahostalloloc per copia zero con spinta?

StackOverflow https://stackoverflow.com//questions/11692326

  •  12-12-2019
  •  | 
  •  

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?

È stato utile?

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:

    .
  1. Memoria host mappata, appuntata con cudaHostAlloc
  2. Ottieni il puntatore del dispositivo per la memoria di copia zero usando cudaHostGetDevicePointer
  3. Creare un thrust::device_ptr utilizzando thrust::device_pointer_cast su quel puntatore del dispositivo (vedere qui per ulteriori informazioni)
  4. È 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
scroll top