Puis-je utiliser Thrust::host_vector ou dois-je utiliser cudaHostAlloc pour une copie nulle avec Thrust ?

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

  •  12-12-2019
  •  | 
  •  

Question

Je souhaite utiliser la copie zéro sur la mémoire mappée en cudaHostGetDevicePointer.Puis-je utiliser thrust::host_vector ou je dois utiliser cudaHostAlloc(...,cudaHostAllocMapped)?Ou est-ce plus facile à faire avec Thrust ?

Était-ce utile?

La solution

Je suis presque sûr qu'il n'est toujours pas possible d'utiliser un poussé :: host_vector comme allocation d'hôte mappée.Il existe un allocateur de mémoire épinglé, mais je ne pense pas que la mémoire mappée soit disponible.Ce que vous devez faire est quelque chose comme ceci :

  1. Mémoire hôte mappée et épinglée allouée avec cudaHostAlloc
  2. Obtenez le pointeur de périphérique pour la mémoire zéro copie en utilisant cudaHostGetDevicePointer
  3. Créer un thrust::device_ptr en utilisant thrust::device_pointer_cast sur le pointeur de cet appareil (voir ici pour plus d'informations)

Vous pouvez soit faire un thrust::device_vector en utilisant le thrust::device_ptr ou passer directement le thrust::device_ptr à tous les algorithmes qui acceptent un itérateur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top