FLOPS por ciclo para sandy-bridge y haswell SSE2 / AVX / AVX2


Estoy confundido sobre cuántos flops por ciclo por núcleo se pueden hacer con Sandy-Bridge y Haswell. Como yo lo entiendo con SSE debe ser 4 flops por ciclo por núcleo para SSE y 8 flops por ciclo por núcleo para AVX / AVX2.

Esto parece verificarse aquí, ¿Cómo logro el máximo teórico de 4 FLOPs por ciclo? y aquí, Especificación de CPU de Sandy-Bridge .

Sin embargo, el siguiente enlace parece indicar que Sandy-bridge puede hacer 16 flops por ciclo por núcleo y Haswell 32 flops por ciclo por núcleo http://www.extremetech.com/computing/136219-intels-haswell-is-an-unprecedented-threat-to-nvidia-amd.

¿Alguien puede explicarme esto?

Editar: Ahora entiendo por qué estaba confundido. Pensé que el término FLOP solo se refería a coma flotante simple (SP). Ahora veo que la prueba en ¿Cómo logro el máximo teórico de 4 FLOPs por ciclo? están en realidad en punto flotante doble (DP) por lo que logran 4 DP FLOPs / ciclo para SSE y 8 DP FLOPs / ciclo para AVX. Sería interesante rehacer estas pruebas en SP.

Author: Community, 2013-03-27

2 answers

Aquí están los recuentos de fallas para una serie de microarquitecturas de procesadores recientes y la explicación de cómo lograrlas:

Intel Core 2 y Nehalem:

  • 4 DP FLOPs / ciclo: 2-wide SSE2 suma + 2-wide SSE2 multiplicación
  • 8 SP FLOPs / ciclo: 4-wide SSE suma + 4-wide SSE multiplicación

Intel Sandy Bridge / Ivy Bridge:

  • 8 DP FLOPs / ciclo: 4-wide AVX suma + 4-wide AVX multiplicación
  • 16 SP FLOPs / ciclo: 8-wide AVX addition + multiplicación AVX de 8 anchos

Intel Haswell / Broadwell/Skylake / Kaby Lake:

  • 16 DP FLOPs / ciclo: dos instrucciones FMA de 4 anchos (multiplicación-suma fusionada)
  • 32 SP FLOPs / ciclo: dos instrucciones FMA de 8 anchos (multiplicación-suma fusionada)

AMD K10:

  • 4 DP FLOPs / ciclo: 2-wide SSE2 suma + 2-wide SSE2 multiplicación
  • 8 SP FLOPs / ciclo: 4-wide SSE suma + 4-wide SSE multiplicación

AMD Bulldozer / Piledriver / Apisonadora / Excavadora, por módulo (dos núcleos):

  • 8 DP FLOPs / ciclo: 4-wide FMA
  • 16 SP FLOPs / ciclo: 8-wide FMA

AMD Ryzen

  • 8 DP FLOPs / ciclo: 4-wide FMA
  • 16 SP FLOPs / ciclo: 8-wide FMA

Intel Atom (Bonnell / 45nm, Saltwell / 32nm, Silvermont/22nm):

  • 1.5 DP FLOPs / ciclo: adición escalar SSE2 + multiplicación escalar SSE2 cada dos ciclos
  • 6 SP FLOPs / ciclo: 4-wide SSE suma + 4-wide SSE multiplicación cada dos ciclo

AMD Bobcat:

  • 1.5 DP FLOPs / ciclo: adición escalar SSE2 + multiplicación escalar SSE2 cada dos ciclos
  • 4 SP FLOPs / ciclo: 4-wide SSE suma cada dos ciclos + 4-wide SSE multiplicación cada dos ciclos

AMD Jaguar:

  • 3 DP FLOPs / ciclo: 4-wide AVX suma cada dos ciclos + 4-wide AVX multiplicación en cuatro ciclos
  • 8 SP FLOPs / ciclo: 8-wide AVX suma cada dos ciclos + 8-wide AVX multiplicación cada el otro ciclo

ARM Cortex-A9:

  • 1.5 DP FLOPs / ciclo: adición escalar + multiplicación escalar cada dos ciclos
  • 4 SP FLOPs / ciclo: 4-wide NEON addition every other cycle + 4-wide NEON multiplication every other cycle

ARM Cortex-A15:

  • 2 DP FLOPs / ciclo: escalar FMA o escalar multiplicar-sumar
  • 8 SP FLOPs / ciclo: 4-wide NEONv2 FMA o 4-wide NEON multiply-add

Qualcomm Krait:

  • 2 DP FLOPs / ciclo: escalar FMA o escalar multiplicar-añadir
  • 8 SP FLOPs / ciclo: 4-wide NEONv2 FMA o 4-wide NEON multiply-add

IBM PowerPC A2 (Blue Gene / Q), por núcleo:

  • 8 DP FLOPs / ciclo: 4-wide QPX FMA cada ciclo
  • Los elementos SP se extienden a DP y se procesan en las mismas unidades

IBM PowerPC A2 (Blue Gene / Q), por hilo:

  • 4 DP FLOPs / ciclo: 4-wide QPX FMA cada dos ciclos
  • Los elementos SP se extienden a DP y se procesan en el mismo unidades

Intel Xeon Phi (Knights Corner), por núcleo:

  • 16 DP FLOPs / ciclo: 8-ancho FMA cada ciclo
  • 32 SP FLOPs / ciclo: 16-wide FMA cada ciclo

Intel Xeon Phi (Knights Corner), por hilo:

  • 8 DP FLOPs / ciclo: 8-wide FMA cada dos ciclos
  • 16 SP FLOPs / ciclo: 16-wide FMA cada dos ciclos

Intel Xeon Phi (Knights Landing), por núcleo:

  • 32 DP FLOPs / ciclo: dos FMA de 8 anchos cada ciclo
  • 64 SP FLOPs / ciclo: dos FMA de 16 anchos cada ciclo

La razón por la que hay datos por hilo y por núcleo para IBM Blue Gene/Q e Intel Xeon Phi (Knights Corner) es que estos núcleos tienen una tasa de problemas de instrucción más alta cuando se ejecuta más de un hilo por núcleo.

 100
Author: Marat Dukhan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-06 09:12:56

El rendimiento de Haswell es menor para la adición que para la multiplicación y FMA. Hay dos unidades de multiplicación / FMA, pero solo una unidad f. p. add. Si su código contiene principalmente adiciones, debe reemplazar las adiciones por instrucciones FMA con un multiplicador de 1.0 para obtener el máximo rendimiento.

La latencia de las instrucciones FMA en Haswell es 5 y el rendimiento es 2 por reloj. Esto significa que debe mantener 10 operaciones paralelas para obtener el máximo rendimiento. Si, por ejemplo, si desea agregar una lista muy larga de números f. p., tendría que dividirla en diez partes y usar diez registros acumuladores.

Esto es posible de hecho, pero ¿quién haría una optimización tan extraña para un procesador específico?

 18
Author: A Fog,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-24 13:35:59