Estoy trabajando en la optimización de un algoritmo utilizando instrucciones SSE2. Pero me he encontrado con este problema cuando me estaba poniendo a prueba el rendimiento:El programa SSE tarda mucho más tiempo en AMD que en Intel
I) Intel E6750
- Hacer 4 veces el algoritmo no SSE2 toma 14.85 segundos
- Hacer 1 vez el algoritmo SSE2 (procesos los mismos datos) realiza 6,89 segundos
II) Phenom II x4 2.8Ghz
- Haciendo 4 veces el algoritmo no toma SSE2 11,43 segundos
- Hacer 1 vez el algoritmo SSE2 (procesa los mismos datos) realiza 12.15 segundos
alguien me puede ayudar por qué ocurre esto? Estoy realmente confundido acerca de los resultados.
En ambos casos estoy compilando con g ++ utilizando -O3 como indicador.
PD: El algoritmo no usa matemáticas de coma flotante, sino que usa las instrucciones enteras de SSE.
Casi el doble de tiempo con el mismo binario, y en una CPU que tiene un reloj más alto y (suponiendo que "Deneb") tiene el mismo tamaño de caché? Gorrón. Lo único que se me ocurre es hacer muchas mezclas, ya que tienen 3 veces más latencia en esta generación de procesadores AMD en comparación con esta generación de CPU Intel (se ve diferente en la última generación). Otras instrucciones seguramente podrían tener un ciclo más o menos aquí y allá, pero en general no debería correr 2 veces más lento. (Los procesadores AMD también son conocidos por "retraso de reformateo", pero como no se combina float/int, eso no debería importar.) – Damon
Una diferencia de más del 20% suena extraña. ¿Cuál es la versión de AMD Phenom? L1/L2/L3 ¿Tamaños de caché? ¿Cuál es la implementación del algoritmo? – alecco