Cómo determinar la cantidad de FLOP que mi computadora es capaz de

15

Me gustaría determinar el número teórico de FLOP (operaciones de punto flotante) que puede hacer mi computadora. ¿Puede alguien ayudarme con esto? (Me gustaría comparar mi computadora con algunas supercomputadoras solo para tener una idea de la diferencia entre ellas)

Ol 'confiable
fuente

Respuestas:

9

El pico teórico FLOP / s viene dado por: El número de núcleos es fácil. La frecuencia promedio debería, en teoría, tener en cuenta cierta cantidad de Turbo Boost (Intel) o Turbo Core (AMD), pero la frecuencia de operación es un buen límite inferior. Las operaciones por ciclo dependen de la arquitectura y pueden ser difíciles de encontrar (8 para SandyBridge e IvyBridge, ver diapositiva 26 ). Es el tema de esta pregunta de desbordamiento de pila , que incluye números para un montón de arquitecturas modernas.

Number of CoresAverage frequencyOperations per cycle
Max Hutchinson
fuente
1
Ok, tengo 2 núcleos, frecuencia de funcionamiento: 1.8 GHz, tecnología Intel Turbo Boost: 3.00 Ghz, no puedo encontrar las operaciones por ciclo, aquí está el sitio web: ark.intel.com/products/75460/… gracias
Ol 'Confiable el
Haswell puede hacer 16 DP / ciclo. Acabo de agregar un enlace en el cuerpo de la respuesta a una respuesta SO.
Max Hutchinson
¿Significa esto que mi computadora puede hacer: 2 x 3,000,000,000 Hz x 16 = 96 Giga FLOPs?
Ol 'Confiable
Significa que podría hacerlo entre 2 * 1.8 GHz * 16 DP = 57.6 GFLOP / sy 96 GFLOP / s, dependiendo de la frecuencia promedio real. Si necesita usar un solo número, 57.6 es el más justo, IMO.
Max Hutchinson
2
Las tasas de FLOP son generalmente una mala medida de la "bondad" de un procesador. Ver scicomp.stackexchange.com/questions/114/… por ejemplo. Es posible que desee pensar en los costos limitantes de su tarea (p. Ej., Límite de cálculo frente a límite de memoria frente a límite de disco) y centrarse en el hardware relevante (sistema de cálculo, sistema de memoria, E / S).
Max Hutchinson el
4

Deberá conocer el modelo y el proveedor de las CPU de su máquina. Una vez que tenga eso, puede buscar en el sitio web del proveedor (o tal vez en Wikipedia) la velocidad del reloj, el número de chips / sockets, el número de núcleos por chip, el número de operaciones de coma flotante por ciclo y el ancho del vector de esas operaciones . Entonces, simplemente multiplicas.

Tomemos, por ejemplo, los procesadores Intel Xeon E5-2680 "Sandy Bridge" en Stampede donde trabajo. Las especificaciones son:

  • 2.7GHz
  • 2 chips / nodo, 8 núcleos / chip
  • 2 instrucciones de vector / ciclo
  • Instrucciones AVX de 256 bits de ancho (4 operandos simultáneos de doble precisión)

Multiplicar esos da 345.6 GF / nodo o 2.2 PF para la parte no acelerada del sistema.

Generalmente pensamos en términos de operaciones de doble precisión (64 bits), porque esa es la precisión requerida para la gran mayoría de nuestros usuarios, pero puede rehacer el cálculo en términos de precisión simple si lo desea. Esto generalmente solo cambia el último factor, digamos 8 SP Flops / instrucción en lugar de 4 DP Flops / inst, pero puede ser muy diferente de eso. Las GPU más antiguas, por ejemplo, solo tenían DP a aproximadamente 1/8 de la tasa de SP. Si alguna vez cita un número para su sistema, debe ser explícito acerca de cuál usó si no es de doble precisión porque la gente supondrá que lo fue, de lo contrario.

Además, si su chip admite instrucciones fusionadas de suma múltiple (FMA) y puede hacerlo a toda velocidad, entonces la mayoría de las personas cuentan esto como 2 operaciones de punto flotante, aunque un contador de rendimiento de hardware podría contarlo como una sola instrucción.

Finalmente, también puede hacer esto para cualquier acelerador que pueda existir en su sistema (como una GPU o Xeon Phi) y agregar ese rendimiento al rendimiento de la CPU para obtener un total teórico.

Bill Barth
fuente
No es suficiente conocer el modelo de CPU, uno necesita descubrir las frecuencias de operación reales
Aksakal
@ Aksakal, para un análisis teórico, probablemente esté bien elegir la frecuencia nominal. Es difícil saber a qué frecuencia funcionarán realmente sus chips, ya que eso puede depender de la carga de trabajo y la calidad de su aire acondicionado.
Bill Barth
2

Entiendo que solicitó el valor teórico, pero como este código casi siempre es inaccesible para cualquier código real, incluso LINPACK, es posible que desee ejecutar DGEMM (optimizado) para matrices muy grandes. La razón por la que prefiero este método es que expone algunas de las deficiencias de ciertos procesadores que les impiden alcanzar su valor teórico de flop máximo.

Por ejemplo, las GPU NVIDIA actualmente realizan operaciones de enteros y de punto flotante en la misma tubería. Esto significa que solo puede lograr el flop / s máximo teórico si no hace ningún cálculo entero . Como la indexación de matrices y cualquier otra forma de acceso a datos requiere una aritmética de enteros en algún lugar, ningún código puede alcanzar el flop / s máximo teórico en una GPU NVIDIA. En la mayoría de los casos, uno ve ~ 80% como el límite superior. Para las CPU que emiten operaciones enteras y de punto flotante simultáneamente, esto no es un problema.

En algunos procesadores multinúcleo similares a GPU como Intel Knights Corner y Blue Gene / Q, es más difícil lograr el flop / s máximo que en las CPU tradicionales para problemas de canalización similares (aunque ambos pueden alcanzar ~ 90% del pico en DGEMM grande al menos )

Jeff
fuente
¿Por qué ningún código puede alcanzar el flop / s máximo teórico en una GPU NVIDIA?
skytree
Ver párrafo 2. Sin embargo, todo esto era relevante para arquitecturas antiguas. Las arquitecturas NVIDIA más recientes pueden ejecutar números enteros y de punto flotante al mismo tiempo y alcanzar> 90% del pico en grandes DGEMM.
Jeff