mali cálculo de sombreado opt

https://community.arm.com/developer/tools-software/graphics/b/blog/posts/arm-mali-compute-architecture-fundamentals

 

Entonces, ¿qué las características arquitectónicas Midgard realmente significan para la optimización de los núcleos de cómputo? Yo recomiendo:

  • Tener suficiente paralelismo a nivel de instrucción en el código del kernel para permitir el empaquetamiento denso de las instrucciones en palabras de instrucción por el compilador. (Esto se refiere a la VLIW-dad de la arquitectura).
  • El uso de operaciones de vectores de código del kernel para permitir la asignación directa de instrucciones vectoriales por el compilador. (Voy a tener mucho más que decir sobre la vectorización después, ya que es uno de mis temas favoritos.)
  • Tener un equilibrio entre palabras de instrucción A y LS. Sin fallos de caché, la relación de 2: 1 de A-palabras a LS-palabras sería óptimo; con fallos de caché, una relación más alta es deseable. Por ejemplo, un núcleo que consta de 15 A-palabras y 7 LS-palabras todavía es probable que obligarse por el LS-pipe.
  • El uso de un número suficiente de ejecutan simultáneamente (o  activas ) hilos por núcleo para ocultar la latencia de ejecución de las instrucciones (que es la profundidad de una tubería correspondiente). El número máximo de hilos activos  I  se determina por el número de registros  R  que los usos código del núcleo:  I  = 256, si 0 <  R  ≤ 4; I  = 128, si 4 <  R  ≤ 8; I  = 64, si 8 <  R  ≤ 16. Por ejemplo, el núcleo A que utiliza 5 registros y núcleo B que los usos 8 registros tanto se pueden ejecutar mediante la ejecución de  no más de 128 hilos por núcleo. Esto significa que puede ser preferible para dividir los núcleos complejos, registro pesado en un número de otras más simples. (Para compilador popular entre nosotros, esto también significa que el servidor puede decidir que se derrame un valor en la memoria en lugar de utilizar un registro adicional cuando su heurística sugieren que el número de registros que se debe probablemente requerido se está acercando 4 u 8)

En algunos aspectos, la escritura de código de alto rendimiento para las GPU Mali incrustados en SoC es más fácil que para las GPU encuentra en las máquinas de escritorio:

  • Los  globales  y  locales  espacios de direcciones OpenCL consiguen asignan a la misma memoria física (la RAM del sistema), respaldado por los cachés transparente para el programador. A menudo, esto elimina la necesidad de copiar los datos y la sincronización explícita barrera asociada.
  • Dado que todos los temas tienen contadores individuales del programa, la divergencia rama es un problema menor que para las arquitecturas basadas en urdimbre.

Supongo que te gusta

Origin www.cnblogs.com/minggoddess/p/12625085.html
Recomendado
Clasificación