2011-06-19 9 views
6

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

  1. Hacer 4 veces el algoritmo no SSE2 toma 14.85 segundos
  2. Hacer 1 vez el algoritmo SSE2 (procesos los mismos datos) realiza 6,89 segundos

II) Phenom II x4 2.8Ghz

  1. Haciendo 4 veces el algoritmo no toma SSE2 11,43 segundos
  2. 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.

+0

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

+0

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

Respuesta

3

Intel ha realizado grandes mejoras en su implementación de SSE en los últimos 5 años aproximadamente, lo que AMD realmente no ha seguido. Originalmente, ambos eran solo unidades de ejecución de 64 bits, y las operaciones de 128 bits se dividieron en 2 microoperaciones. Sin embargo, desde que se introdujeron Core y Core 2, las CPU Intel tuvieron una implementación de SSE completa de 128 bits, lo que significa que las operaciones de 128 bits obtuvieron efectivamente un aumento de rendimiento de 2x (1 microoperación frente a 2). Las CPU Intel más recientes también tienen varias unidades de ejecución SSE, lo que significa que puede obtener> 1 instrucción por rendimiento de reloj para las instrucciones SIMD de 128 bits.

+0

Wow. Nunca pensé que esto fuera tan diferente cuando compré la CPU el año pasado = (ahora mismo estoy entrando en HPC y ahora puedo entender la diferencia de dinero. –

+0

Si usa SSE, entonces Intel es realmente el único juego en la ciudad, para ahora al menos. Para el código que no es SIMD, puede que no haya una diferencia tan grande, y las CPUs de Intel son bastante caras, por lo que bang-per-buck se nivela un poco. –

Cuestiones relacionadas