arm - single - qué significa sisd
Técnicas comunes de SIMD (2)
¿Dónde puedo encontrar información sobre trucos SIMD comunes? Tengo un conjunto de instrucciones y sé cómo escribir código SIMD no complicado, pero sé que SIMD ahora es mucho más poderoso. Puede contener código sin ramificación condicional complejo.
Por ejemplo ( ARMv6
), la siguiente secuencia de instrucciones establece que cada byte de Rd es igual al mínimo sin signo de los bytes correspondientes de Ra y Rb:
USUB8 Rd, Ra, Rb
SEL Rd, Rb, Ra
Los enlaces a tutoriales / técnicas SIMD poco comunes también son buenos :) ARMv6 es el más interesante para mí, pero x86 (SSE, ...) / Neon (en ARMv7) / otros también son buenos.
Pruebe el proyecto SSEPlus de AMD en sourceforge
Uno de los mejores recursos SIMD de todos los tiempos fue la antigua lista de correo AltiVec. Aunque sospecho que PowerPC / AltiVec es específico, gran parte del material de esta lista sería de interés general para cualquiera que trabaje con otras arquitecturas SIMD. Lamentablemente, esta lista ahora parece estar obsoleta después de ser trasladada a un foro en power.org, pero es posible que pueda encontrar versiones archivadas de la misma. (Si no, hágamelo saber, tengo casi todas las publicaciones de 2000 a 2007).
También hay mucha información potencialmente útil sobre la vectorización y el rendimiento de AltiVec, SSE, SIMD en general en http://developer.apple.com/hardwaredrivers/ve/index.html , una gran parte de la cual puede ser transferible a otros SIMD arquitecturas