supported program instalacion how gpus developer cuda gpu thrust zero-copy

program - how install cuda



¿Puedo usar thrust:: host_vector o debo usar cudaHostAlloc para copia cero con Thrust? (1)

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


Estoy bastante seguro de que todavía no es posible usar un thrust :: host_vector como una asignación de host mapeada. Hay un asignador de memoria fija, pero no creo que la memoria mapeada esté disponible. Lo que debes hacer es algo como esto:

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

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