Donde las instrucciones SSE del x86-64 (instrucciones vectoriales) superan las instrucciones normales. Porque lo que estoy viendo es que las cargas y las tiendas frecuentes que se requieren para ejecutar las instrucciones de SSE anulan cualquier ganancia que tenemos debido al cálculo del vector. Entonces, ¿podría alguien darme un código SSE de ejemplo en el que funcione mejor que el código normal?Donde las instrucciones SSE superan las instrucciones normales
Su tal vez porque estoy pasando cada parámetro por separado, así ...
__m128i a = _mm_set_epi32(pa[0], pa[1], pa[2], pa[3]);
__m128i b = _mm_set_epi32(pb[0], pb[1], pb[2], pb[3]);
__m128i res = _mm_add_epi32(a, b);
for(i = 0; i < 4; i++)
po[i] = res.m128i_i32[i];
no está allí una manera que puedo pasar todos los 4 números enteros en una sola vez, me refiero a pasar todo el 128 bytes de pa
de una sola vez? ¿Y asignar res.m128i_i32
al po
de una vez?
Básicamente, cada vez que tenga una muy alta computación/load-store proporción. – Mysticial
Sí, definitivamente no quiere usar '_mm_set_epi32()' así. Use '_mm_load_si128()'.Y si no puede alinear los datos, puede usar '_mm_loadu_si128()' con una penalización de rendimiento. – Mysticial
¿Alinea los datos? ¿Que quieres decir con eso? – pythonic