Estoy interesado en información sobre la velocidad de sin()
y cos()
en Open GL Shader Language.Velocidad de las funciones cos() y sin() en sombreadores GLSL?
El GLSL Specification Document indica que:
Las funciones integradas básicamente se dividen en tres categorías:
- ...
- ...
- representan un hardware de gráficos de operación es probable que acelere en algún momento. Las funciones de trigonometría se incluyen en esta categoría .
EDIT:
Como se ha señalado, contar ciclos de reloj de las operaciones individuales como sin()
y cos()
en realidad no cuentan toda la historia rendimiento.
Para aclarar mi pregunta, lo que realmente me interesa es si vale la pena optimizar sin()
y cos()
llamadas para casos comunes.
Por ejemplo, en mi aplicación, será muy común que el argumento sea 0
. Lo mismo ocurre algo como esto sentido:
float sina, cosa;
if (rotation == 0)
{
sina = 0;
cosa = 1;
}
else
{
sina = sin(rotation);
cosa = cos(rotation);
}
O el GLSL
compilador o las sin()
y cos()
implementaciones cuidar de optimizaciones así para mí?
¿Qué quiere decir con "GPU modernas que proporcionan aceleración de hardware para' sin() 'y' cos() '?" Si se ejecuta en la GPU, se puede decir que es hardware acelerado. En cualquier caso, lo mejor es probarlo y perfilarlo, ya que los ciclos de reloj en una GPU son algo sin sentido sin más contexto en cuanto a lo que estás haciendo. Incluso entre diferentes tarjetas del mismo proveedor, puede haber diferencias en el número de unidades de ejecución, por lo que los ciclos solo le dicen parte de la historia. – user1118321
Con esas GPU, creo que tendrá el tiempo de ejecución más rápido posible de esas funciones trigonométricas. Interesante pregunta ... –
Como se señala en [este] (http://stackoverflow.com/questions/10111898/glsl-relative-to-each-other-how-expensive-are-operations-like-multiply-divide) y [este] (http://stackoverflow.com/questions/8415251/performance-of-different-cg-glsl-hlsl-functions) pregunta, esta pregunta es esencialmente incontestable. Un uso particular de 'sin' puede costar * nada *, dependiendo de dónde lo use y el hardware. –