2009-10-08 21 views
6
  1. Tengo algunas ideas erróneas sobre la medición de fracasos, en la arquitectura Intel, ¿es una FLOP una adición y una multiplicación juntas? Leí sobre esto en algún lugar en línea y no hay debate que pueda rechazar esto. Sé que FLOP tiene un significado diferente en diferentes tipos de CPU.FLOPS núcleo de Intel y probándolo con C (producto interno)

  2. ¿Cómo puedo calcular mi pico FLOPS teórico? Estoy usando Intel (R) Core (TM) 2 Duo CPU E7400 @ 2.80GHz. ¿Cuál es exactamente la relación entre GHz y FLOPS? (incluso la entrada de wikipedia en FLOPS NO especifica cómo hacerlo)

  3. Voy a utilizar los siguientes métodos para medir el rendimiento real de mi computadora (en términos de fracasos): Producto interno de dos vectores: para dos vectores de tamaño N, es el número de fracasos 2n (n -1) (si una suma o una multiplicación se considera que es 1 flop). Si no, ¿cómo debo hacer para calcular esto?

Conozco mejores formas de hacerlo, pero me gustaría saber si los cálculos que propongo son correctos. Leí en alguna parte sobre LINPACK como punto de referencia, pero aún me gustaría saber cómo se hace.

+0

Una multiplicación y una adición suelen denominarse MAC (acumulación múltiple) y es una medida utilizada a menudo con DSP. – Skizz

Respuesta

2

This article muestra alguna teoría sobre los números de FLOPS para CPU x86. Solo es actual hasta Pentium 4, pero quizás puedas extrapolar.

2

A FLOP significa Operación de punto flotante.

Significa lo mismo en cualquier arquitectura que admita operaciones de coma flotante, y generalmente se mide como la cantidad de operaciones que pueden tener lugar en cualquier segundo (como en FLOPS, operaciones de coma flotante por segundo).

here puedes encontrar herramientas para medir los FLOPS de tu computadora.

9

En cuanto a su segunda pregunta, el cálculo FLOPS teórico no es demasiado difícil. Puede desglosarse en aproximadamente:

(Número de núcleos) * (Número de unidades de ejecución/núcleo) * (ciclos/segundo) * (Operaciones de la unidad de ejecución/ciclo) * (flotadores por registro/Unidad de ejecución) operación)

A Core-2 Duo tiene 2 núcleos y 1 unidad de ejecución por núcleo. un registro SSE tiene 128 bits de ancho. un flotador tiene 32 bits de ancho por lo que puede almacenar 4 flotadores por registro. Supongo que la unidad de ejecución realiza 1 operación SSE por ciclo. Por lo que debe ser:

2 * 1 * 2,8 * 1 * 4 = 22,4 GFLOPS

que coincide: http://www.intel.com/support/processors/sb/cs-023143.htm

Este número es obviamente mejor rendimiento caso puramente teórico. El rendimiento en el mundo real probablemente no se acerque a esto debido a una variedad de razones.Probablemente no valga la pena intentar correlacionar directamente los flops con el tiempo de ejecución real de la aplicación, sería mejor que probara los cálculos utilizados por su aplicación.

+0

Eso es exactamente lo que necesito muchas gracias. Por cierto, ¿dónde encontraste esa ecuación? –

+2

El Core2 realmente puede emitir un multiplicador SSE y agregar cada ciclo, por lo que el cálculo para FLOPS de precisión simple es 2 * 1 * 2.8 * 2 * 4 = 44.8 GFLOPS; Creo que el enlace de Intel está listando FLOPS de doble precisión (2 * 1 * 2.8 * 2 * 2 = 22.4). –

Cuestiones relacionadas