Tengo una aplicación en la que me gustaría compartir una sola GPU entre múltiples procesos. Es decir, cada uno de estos procesos crearía su propio contexto CUDA o OpenCL, dirigido a la misma GPU. Según el libro blanco de Fermi [1], el cambio de contexto a nivel de aplicación es menor a 25 microsegundos, pero los lanzamientos se serializan de manera efectiva a medida que se inician en la GPU, por lo que Fermi no funcionaría bien para esto. De acuerdo con el libro blanco de Kepler [2], hay algo llamado Hyper-Q que permite hasta 32 conexiones simultáneas desde múltiples flujos CUDA, procesos MPI o hilos dentro de un proceso.Ejecución concurrente del kernel GPU desde procesos múltiples
Mis preguntas: Alguien ha intentado esto en una GPU Kepler y ha verificado que sus núcleos se ejecutan al mismo tiempo cuando se programan desde distintos procesos? ¿Es solo una característica de CUDA o también se puede usar con OpenCL en las GPU de Nvidia? ¿Las GPU de AMD admiten algo similar?
[2] http://www.nvidia.com/content/PDF/kepler/NVIDIA-Kepler-GK110-Architecture-Whitepaper.pdf
En respuesta a la primera pregunta que plantea, nvidia ha publicado algunos resultados de hiper-Q en un blog [aquí] (http://blogs.nvidia.com/2012/08/unleash-legacy-mpi-codes-with -keplers-hyper-q /). –
Interesante, gracias por el enlace. Esa publicación de blog también implica que las GPU K10 no tienen Hyper-Q, mientras que las K20 sí lo harán. –
Eso es correcto. Observará el enlace del libro blanco de Kepler que publicó las referencias "GK110" en el título. La GPU en K20 es GK110. La GPU en K10 es GK104 (dos de ellos). –