Estoy tratando de multiplicar dos vectores juntos donde cada elemento de un vector se multiplica por el elemento en el mismo índice en el otro vector. Luego quiero sumar todos los elementos del vector resultante para obtener un número. Por ejemplo, el cálculo se vería así para los vectores {1,2,3,4} y {5,6,7,8}:Cómo calcular el producto vector punto utilizando funciones intrínsecas SSE en C
1 * 5 + 2 * 6 + 3 * 7 + 4 * 8
Esencialmente, estoy tomando el producto punto de los dos vectores. Sé que hay un comando SSE para hacer esto, pero el comando no tiene una función intrínseca asociada. En este punto, no quiero escribir ensambles en línea en mi código C, por lo que quiero usar solo funciones intrínsecas. Esto parece un cálculo común, así que estoy sorprendido de que no haya encontrado la respuesta en Google.
Nota: Estoy optimizando para una micro arquitectura específica que admite hasta SSE 4.2.
Gracias por su ayuda.
Como nota, me gustaría señalar que calcular el producto Dot usando el _dp_ intrinsic es más lento que hacerlo de la segunda manera. –
@SergueiFedorov que depende completamente de su hardware, no hay un caso global que sea más lento. – CoffeeandCode
Creo que hay mejores formas para la suma horizontal que usar '_mm_hadd_ps'. Ver http://stackoverflow.com/a/35270026/195787. – Royi