¿Hay un número máximo de instrucciones de lenguaje ensamblador para cargar en la unidad de programa fragmento? Tengo un algoritmo en el puerto de cpu a gpu y aparentemente no cabe en el gpu.Número máximo de instrucciones GLSL
13
A
Respuesta
2
Hay un límite en la cantidad máxima de instrucciones que un sombreador puede tener. Hasta donde yo sé, varía de GPU a GPU. Si su sombreador es demasiado grande, la compilación generará un error.
34
Existen varios límites duros y blandos, algunos de los cuales no son inmediatamente evidentes:
- ranuras Instrucción: El número total de instrucciones que el hardware puede acomodar en la memoria local.
- instrucciones ejecutadas: El número máximo de instrucciones que se ejecutarán (incluyendo las instrucciones que se ejecutan varias veces en un bucle)
- Una sola instrucción GLSL puede asignar a una docena o más instrucciones
- Varios instrucciones GLSL puede asignar a una instrucciones únicas dependiendo de la calidad del optimizador (por ejemplo, multiplicar-agregar, punto, lerp)
- Los registros de temperatura limitada (solo 32) pueden requerir más instrucciones de las necesarias en el hardware pre-SM4 (ningún problema con 4096).
- Swizzling por lo general no cuesta instrucciones adicionales en la actualidad, pero hace en algún hardware antiguo, y puede en algunas situaciones en algún hardware (esp. Gl_FragColor es tal candidato)
- Independientemente de instrucciones reales, OpenGL 2.0 hardware compatible se limita a 8 recuperaciones dependientes de textura (ilimitados en hardware que puede hacer OpenGL 2.1 o mejor)
tienes que estos mínimos garantizados (la mayoría de las tarjetas tienen más):
- 512 ranuras de instrucciones para vertex y pixel shaders de OpenGL 2.x (SM3) hardware capaz
- 65536 instrucciones ejecutadas
- 4096 vertex y pixel 65536 ranuras de instrucciones de sombreado en 3.x (SM4) de hardware
- 65536 instrucciones ejecutadas vertex shader, instrucciones de sombreado de píxeles ilimitada
- Al menos 24 sucursales dinámica es posible 2.x (SM3) de hardware
- ramificación completamente dinámico (sin límites) en el hardware SM4
- moverse solamente condicional disponibles en SM2.x, todo lo demás debe ser acomodadas por la duplicación de código y desenrollado del bucle, o debe fallar
+8
Esta es una gran respuesta, sin embargo sería mejor con algunas referencias. – Kaganar
Cuestiones relacionadas
- 1. Número máximo de Err.Raise?
- 2. Número máximo de Ruby
- 3. Parámetros de función número máximo
- 4. Número máximo de cookies permitidas
- 5. Número máximo de HttpWebRequests concurrentes
- 6. Funciones de PHP: número máximo de argumentos
- 7. SQL DELETE - Número máximo de filas
- 8. OpenSSL configure el número máximo de conexiones
- 9. Número máximo de tablas en MySQL
- 10. Python máximo con igual número de casos
- 11. Número máximo de unidades en windows?
- 12. Número máximo de caracteres stringbuilder puede acomodar
- 13. ¿Número máximo de inodos en un directorio?
- 14. Jenkins: número máximo de trabajos simultáneos
- 15. Número máximo de procesos en Linux
- 16. WCF Service Número máximo de métodos
- 17. Número de hilo máximo para una aplicación?
- 18. Número máximo de UILocalNotification para iphone
- 19. Aumento MongoDB número máximo de conexiones
- 20. iphone y notificaciones: ¿número máximo de notificaciones?
- 21. Número máximo de elementos enum en Java
- 22. GLSL GLSL y ES 2
- 23. Devuelve el número de filas afectadas por las instrucciones UPDATE
- 24. Las instrucciones SELECT utilizadas tienen un número diferente de columnas
- 25. GLSL/C++: matrices de uniformes?
- 26. Clasificación rápida en GLSL?
- 27. Número de serie de Android: predeterminado mín., Máximo de XML
- 28. número máximo de carga de archivos permitidos se ha superado
- 29. Número máximo (utilizable) de filas en una tabla de Postgresql
- 30. Limite un número máximo de filas de sqlite
No sé nada de shaders, pero supongo que no tienen espacio de almacenamiento infinito. –