¿Existe un método para compartir la GPU entre dos programas separados con capacidad OpenCL, o más específicamente entre dos procesos separados que simultáneamente requieren que la GPU ejecute kernels OpenCL? Si es así, ¿cómo se hace?Compartiendo la GPU entre programas compatibles con OpenCL
Respuesta
Depende de lo que llame compartir.
En general, puede crear 2 procesos que crean un dispositivo OpenCL en la misma GPU. Es entonces la responsabilidad del controlador/OS/GPU de asegurarse de que las cosas funcionen.
Dicho esto, la mayoría de las implementaciones cortarán en el tiempo la ejecución de la GPU para que esto suceda (al igual que sucede con los gráficos).
Creo que esto no es exactamente lo que buscas. ¿Puedes ampliar tu pregunta con un caso de uso?
Las GPU actuales (excepto Fermi de NVidia) no admiten la ejecución simultánea de más de un kernel. Además, hasta la fecha las GPU no son compatibles con la multitarea preventiva; ¡es completamente cooperativo! La ejecución de un kernel no se puede suspender y continuar más adelante. Por lo tanto, la granularidad de cualquier intercambio de GPU basado en el tiempo depende de los tiempos de ejecución de los kernels.
Si tiene programas múltiples en ejecución que requieren acceso GPU, debe, por tanto, asegurarse de que sus granos tienen tiempos de ejecución cortos (< 100ms es una regla de oro), de manera que el tiempo de la GPU puede timesliced entre los núcleos que quieren ciclos de GPU . También es importante hacerlo, ya que, de lo contrario, los gráficos del sistema host dejarán de responder porque también necesitan acceso a la GPU. Esto puede ir tan lejos que un kernel en un bucle infinito o largo aparentemente bloqueará el sistema.
- 1. Lista de CPU/GPU compatible con OpenCL
- 2. Dispositivo de CPU OpenCL vs dispositivo GPU
- 3. OpenCL: ejecutar múltiples dispositivos CPU/GPU
- 4. OpenCL vs. DirectCompute?
- 5. Compartiendo memoria entre módulos
- 6. Compartiendo datos entre JVM
- 7. compartiendo sesión entre WAR
- 8. Modo de cálculo exclusivo con OpenCL + NVidia
- 9. ¿GLSL utiliza SLI? ¿OpenCL? ¿Qué es mejor, GLSL o OpenCL para múltiples GPU?
- 10. Programación de OpenCL y GPU Hoja de ruta
- 11. compartiendo Ehcache entre dos webapps
- 12. Compartiendo una variable entre procesos
- 13. OpenCL compatible con DSP
- 14. Diferencia entre OpenCV y OpenCL
- 15. Compartiendo Enum con WCF Service
- 16. IIS7: Compartiendo sesiones entre aplicaciones con State Server
- 17. comunicación entre programas python
- 18. Compartiendo SESIÓN Variables entre varios subdominios
- 19. Compartiendo archivos entre sucursales en Git
- 20. Accesorios compatibles con Mocha compatibles
- 21. Compartiendo objetos de dominio entre actividades
- 22. compartiendo código entre proyectos en eclipse
- 23. programas abiertos con applescript
- 24. Compartiendo un proyecto entre Eclipse y Netbeans
- 25. ¿Cómo pruebo OpenCL en la GPU cuando estoy conectado de forma remota en Mac?
- 26. Compartiendo sesión entre el servicio web y la aplicación asp.net
- 27. Programación funcional pura para la GPU
- 28. Memcache compartiendo
- 29. Comenzando con OpenCL en Windows 7
- 30. OpenCL: instrucción popcnt de 32 bits y 64 bits en la GPU?
El caso de uso sería un proceso único que utiliza OpenCL para utilizar la GPU durante un largo período de tiempo. Si se lanza otro proceso OpenCL que también requiere la GPU, ¿cómo se maneja? Su respuesta sugiere que el controlador dividirá el tiempo, es decir, asignará toda la GPU a un proceso en un momento dado. Sin duda, esto es ineficiente, dado que los datos asociados con cada proceso deben copiarse hacia atrás y hacia adelante entre el dispositivo y el host. – Chris
@Chris: la respuesta corta es que no se deben copiar todos los datos. la ejecución tiene un límite de tiempo, pero la memoria puede permanecer compartida, si ambas encajan en la tarjeta (la memoria está "virtualizada". Consulte la siguiente URL). Si no se ajusta, copiará los datos con seguridad. La granularidad de la división temporal también es gruesa. Suponiendo que estamos hablando de Windows, en WDDM 1.1, nunca se interrumpe la ejecución de un núcleo CL, y más. Consulte http://en.wikipedia.org/wiki/Windows_Display_Driver_Model para obtener más información. – Bahbar
En particular: http://download.microsoft.com/download/5/b/9/5b97017b-e28a-4bae-ba48-174cf47d23cd/PRI103_WH06.ppt – Bahbar