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?¿Puedo usar thrust :: host_vector o debo usar cudaHostAlloc para copiar cero con Thrust?
6
A
Respuesta
5
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 hay que hacer es algo como esto:
- asignada, la memoria del host clavado Numerado con
cudaHostAlloc
- Obtener el puntero del dispositivo para la memoria de copia cero utilizando
cudaHostGetDevicePointer
- Crear una
thrust::device_ptr
usandothrust::device_pointer_cast
en ese puntero del dispositivo (ver here para más información)
Usted puede ya sea el hacer una thrust::device_vector
utilizando el thrust::device_ptr
o dirctly pasar el thrust::device_ptr
a cualquier algoritmo que acepte un iterador.
Cuestiones relacionadas
- 1. STL thrust multiple vector transform?
- 2. ¿Thrust es síncrono o asíncrono?
- 3. push_back usando la biblioteca Thrust
- 4. Ordenar 3 matrices por clave en CUDA (usando Thrust quizás)
- 5. De thrust :: device_vector a puntero sin procesar y viceversa?
- 6. cómo calcular un promedio de una matriz int2 utilizando Thrust
- 7. Encontrar el valor máximo del elemento Y su posición usando CUDA Thrust
- 8. ¿Debo usar StringBuilder o StringBuffer para webapps?
- 9. Debo usar ipairs o un ciclo para
- 10. Thrust Complex Transform de 3 vectores de diferentes tamaños
- 11. ¿Debo usar eval() o call_user_func()?
- 12. ¿Debo usar Pilones o Pirámide?
- 13. ¿Debo usar herencia o composición?
- 14. ¿Debo usar AppDomain.CurrentDomain.BaseDirectory o System.Environment.CurrentDirectory?
- 15. ¿Debo usar horquilla o hilos?
- 16. ¿Debo usar em o px?
- 17. ¿Debo usar Flash o Flex?
- 18. ¿Debo usar multiplicación o división?
- 19. ¿Debo usar CouchDB o SimpleDB?
- 20. ¿Debo usar int o UInt16?
- 21. ¿Debo usar ArrayList o IList
- 22. ¿Debo usar Phobos o Tango?
- 23. ¿Debo usar alias o alias_method?
- 24. ¿Debo usar byte o int?
- 25. ¿Debo usar doble o flotar?
- 26. Debo usar DataInputStream o BufferedInputStream
- 27. ¿Debo usar Meteor.startup() o $ (function() {})
- 28. ¿Debo usar Pylon's Paste para alojar mi sitio web de Pylons? ¿O puedo usar Apache?
- 29. ¿Debo usar EC2 con DynamoDB?
- 30. ¿Debo usar wtforms con Pilones?
Gracias! Pero, ¿cómo puedo hacer que thrust :: device_vector use thrust :: device_ptr? – Alex
Puede crear un 'thrust :: device_vector' de un rango de iterador, por lo que algo como' thrust :: device_vector v (p, p + n) 'crea el vector' v' del 'device_ptr'' p' que apunta a una asignación de elementos 'n'. –
talonmies
Pero será crear un nuevo device_vector y copiar la memoria desde device_ptr p al vector, ¿no? – Alex