¿Las GPU modernas contienen desplazadores de barril?

8

Soy consciente de que la mayoría de las GPU modernas, aunque están diseñadas para coma flotante, son más o menos equivalentes en rendimiento entero en estos días, con algunas advertencias como la falta de una suma múltiple fusionada. Sin embargo, no estoy seguro de cómo se aplica esto a las operaciones de turno. Estoy haciendo Marching Cubes en la GPU, inicialmente escribiendo una posición empaquetada de 32 bits para cada cubo de superficie y luego desempacando estos en una pasada posterior a los vértices reales en ese cubo, así:

ivec3 unpackedPos = ivec3( packedPos >> 20 & 0x3FF,
                         packedPos >> 10 & 0x3FF,
                         packedPos & 0x3FF);

¿Se me ocurrió preguntarme si las unidades sombreadoras tienen desplazadores de barril en estos días? ¿Estoy haciendo 2 turnos aquí o 30?

EDITAR >> Soy un idiota ... Gracias por las respuestas chicos, útil saberlo, pero he estado haciendo todo esto mal. Debería usar el formato de textura RGB10_A2UI y luego empaquetar / desempacar con una sola instrucción de carga / almacenamiento de imágenes en lugar de perder el tiempo con los cambios de bits.

RE_EDIT >> O no ... Este método aparentemente funciona en cajas rojas pero no en las verdes, por lo que se vuelve a los cambios de bits.

russ
fuente
24 cambiadores de bits se utilizan en un solo punto flotante de precisión para alinear las mantisas, por lo que el compilador podría generar unos pocos, pero no creo que se verá 30.
Daniel M Gessel

Respuestas: