2012-02-18 52 views
5

¿Cómo mido FLOPS o IOPS? Si mido el tiempo para la suma/multiplicación de coma flotante ordinaria, ¿es equivalente a FLOPS?Cómo medir FLOPS

+1

¿Quieres decir "IPS"? IOPS es algo bastante diferente. –

Respuesta

1

FLOP no están bien definidos. Los mul FLOPS son diferentes a agregar FLOPS. Debe presentar su propia definición o tomar la definición de un punto de referencia conocido.

2

Normalmente utiliza algún punto de referencia conocido. Cosas como MIPS y megaFLOPS no significan mucho para empezar, y si no los restringe a puntos de referencia específicos, incluso ese pequeño significado se pierde.

Por lo general, por ejemplo, la velocidad entera se indicará en "drystone MIPS" y coma flotante en "Linpack megaFLOPS". En estos, "drystone" y "Linpack" son los nombres de los puntos de referencia utilizados para hacer las mediciones.

IOPS son operaciones de E/S. Son casi lo mismo, aunque en este caso, no hay tanto acuerdo sobre qué punto (s) de referencia usar (aunque SPC-1 parece bastante popular).

2

Puede usar los contadores de rendimiento de la CPU para que la CPU cuente el número de operaciones de punto flotante que utiliza para su programa en particular. Entonces es la simple cuestión de dividir esto por el tiempo de ejecución. En Linux las herramientas Potencia permitir que esto puede hacer muy fácilmente, tengo una valoración crítica de los detalles de esto en mi blog aquí:

http://www.bnikolic.co.uk/blog/hpc-howto-measure-flops.html

+0

¡Gracias por publicar tu respuesta! Asegúrese de leer detenidamente [Preguntas frecuentes sobre autopromoción] (http://stackoverflow.com/faq#promotion). También tenga en cuenta que * se requiere * que publique un descargo de responsabilidad cada vez que se vincula a su propio sitio/producto. –

0

Ésta es una pregunta muy específica de la arquitectura, para un ingenuo/básico/start start. Recomendaría averiguar cuántas operaciones de multiplicación de Operations 1 lleva a cabo en su hardware específico, luego hacer una gran multiplicación de matrices y ver cuánto tiempo lleva. A continuación, se puede estimar eaisly un flop de su hardware en particular

el estándar de la industria de fracasos de medición es el bien conocido Linpack o HPL high performance linpack, intente buscar en la fuente o en ejecución los de su auto

También me remito a esta respuesta como excelente reference

3

FLOPS es operaciones de coma flotante por segundo. Para medir FLOPS primero necesita un código que realice tales operaciones. Si tiene dicho código, lo que puede medir es su tiempo de ejecución. También necesita resumir o estimar (¡no medir!) Todas las operaciones de coma flotante y dividirlas en el tiempo de pared medido. Debería contar todas las operaciones ordinarias como adiciones, restas, multiplicaciones, divisiones (sí, a pesar de que son más lentas y se evitan mejor, todavía son FLOP ...). ¡Ten cuidado de cómo cuentas! Lo que ve en su código fuente probablemente no sea lo que el compilador produce después de todas las optimizaciones. Para asegurarse de que probablemente tendrá que mirar el conjunto ...

FLOPS no es lo mismo que Operaciones por segundo. Por lo tanto, aunque algunas arquitecturas tienen una sola instrucción MAD (multiplicar y agregar), esas siguen contando como dos FLOP. Del mismo modo, las instrucciones SSE. Los cuenta como una sola instrucción, aunque realizan más de un FLOP.

FLOPS no son del todo insignificantes, pero debe tener cuidado al comparar sus FLOPS a sb. Ellas FLOPS, especialmente los proveedores de hardware. P.ej. NVIDIA ofrece el rendimiento máximo de FLOPS para sus tarjetas asumiendo operaciones MAD. A menos que tu código los tenga, nunca obtendrás este rendimiento. ¡O reconsidere el algoritmo, o modifique los FLOPS de hardware de punta por un factor correcto, que necesita descubrir para su propio algoritmo! Por ejemplo, si su código solo realiza la multiplicación, lo dividiría entre 2. Contar correctamente podría hacer que su código sea deficiente a bastante eficiente sin cambiar una sola línea de código.

Cuestiones relacionadas