jueves, 2 de febrero de 2017

Intel Skylake Prime95 freeze bug – ProfessionalSAT

Prime95 y yo somos viejos conocidos…

Prime95_x64Ya hace años que utilizo asiduamente este software para garantizar la estabilidad de todos mis Sistemas de Altas Prestaciones y he escrito varios artículos sobre su funcionamiento, como por ejemplo este de 2009:

Sistemas de altas Prestaciones. Metodología de validación – ProfessionalSAT

Prime95 supone un gran stress para la máquina y un excelente método de validación de sistemas.

Además, es puede configurar la carga de proceso de coma flotante de varias maneras para someter al sistema a distintos tipos de cálculos. De este modo testeamos las cachés L1, L2, L3, más o menos memoria RAM y las unidades de coma flotante con distintos juegos de instrucciones.

El error de cáculo de Skylake en Prime95 - Skylake Prime95 freeze

El bug en cuestión, concretamente un error de cálculo (error de precisión), ocurre cuando se dan las siguientes condiciones:

Activar el juego de instrucciones AVX de 256 bit FPU en Prime95 en una CPU Intel Skylake.

Activar  HyperThreading.

De echo el error no es general en cualquier cálculo en Prime95 sino en caso de ciertos exponentes aislados y para ciertos tamaños FFT (768 KB).

Skylake incorpora unidades de coma flotante AVX2 / FMA (Fused Multiply Add), al igual que Haswell 22 nm y Broadwell 14 nm, con juego de instrucciones Intel FMA. Gracias a estas unidades FMA disponibles desde Haswell se consigue el doble de potencia FPU en cálculos combinados suma / multiplización.

AVX2_FMA3_HaswellHaswell introdujo las unidades FPU FMA que doblaron el ancho de banda en cálculo FPU.

Y redujeron la latencia (1.6 veces inferior) en operaciones combinadas suma / multiplicación respecto a las CPUs anteriores (IvyBridge 22 nm, SandyBridge 32 nm, …)

FMA3_FLOPS_LATFMA3 aporta una mejora de un factor 1.6X en latencia.

Usando AVX2 / FMA3 en Prime95 NO se produce ningún resultado erróneo en los cálculos, por ello hay que forzar el code path AVX en la configuración de Prime95 para detectar el error de cálculo.

La solución de Intel al error de Skylake

La solución propuesta consiste en una simple actualización de BIOS. Lo importante es saber si tendrá consecuencias mensurables en rendimiento. A día de hoy y sin conocer las causas hardware concretas es imposible saberlo.

Lo que está claro es que algo chirría en la implementación de las unidades FPU FMA en Skylake.

Probablemente en las loockup tables de las funciones trigonométricas empleadas en los cálculos FFT (Fast Fourier Transform) que ejecuta Prime95 para su análisis de números primos.

Algunos de mis artículos sobre Prime95:

Stress test de procesador. Prime95 2.65 X64 – SATSoftware
Sistemas de altas Prestaciones. Metodología de validación – ProfessionalSAT
Increíble pero cierto – ProfessionalSAT
Tipos de errores en Prime95
Degradación física de la memoria DDR3 en cargas de trabajo de saturación – ProfessionalSAT
Prime95. Torture test – SATSoftware

Este problema de Intel con Skylake me recuerda un affaire que tuve con Intel y Dell allá por 1994 – 1995 del que próximamente escribiré un artículo… No sé si a muchos de vosotros os sonará el asunto… el Pentium FDIV bug.

Si consideras útil el contenido de este Blog, ayuda a mantenerlo ojeando algunas de las ofertas que consideres interesantes de nuestros anunciantes. Gracias de antemano.

El que tenga dudas o aportaciones tiene para ello la sección de comentarios, intentaré responder a todos y con la máxima claridad. Los Blogs deben de ser lugares de intercambio y agradezco vuestro feedback.

Carlos Yus Valero – informaticapremium      informaticapremium-logo-150px[3]