¿Puedo usar Thrust::host_vector o debo usar cudaHostAlloc para realizar copias cero con Thrust?

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

  •  12-12-2019
  •  | 
  •  

Pregunta

Quiero usar copia cero en la memoria asignada por cudaHostGetDevicePointer.Puedo usar thrust::host_vector o debo usar cudaHostAlloc(...,cudaHostAllocMapped)?¿O es de alguna manera más fácil hacerlo con Thrust?

¿Fue útil?

Solución

Estoy bastante seguro de que todavía no es posible utilizar Thrust::host_vector como asignación de host asignada.Hay un asignador de memoria anclado, pero no creo que la memoria asignada esté disponible.Lo que necesitas hacer es algo como esto:

  1. Memoria de host fijada y asignada asignada con cudaHostAlloc
  2. Obtenga el puntero del dispositivo para la memoria de copia cero usando cudaHostGetDevicePointer
  3. Crear un thrust::device_ptr usando thrust::device_pointer_cast en el puntero de ese dispositivo (consulte aquí para más información)

Puedes hacer un thrust::device_vector utilizando el thrust::device_ptr o pasar directamente el thrust::device_ptr a cualquier algoritmo que acepte un iterador.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top