performance - cortex - ¿Qué[neon/vfp/vfp3] debo especificar para el mfpu cuando evalúo y comparo el rendimiento del flotador en el procesador ARM?
arquitectura del procesador arm (2)
Quiero evaluar algunos resultados de flotación del procesador ARM diferente. Uso lmbench
y pi_css5
, confundo en la prueba de flotación.
Desde cat /proc/cpuinfo
(abajo), creo que hay 3 tipos de características de flotación: ¿neón, vfp, vfpv3? A partir de esta pregunta y respuesta , parece que depende del compilador. Aún así, no sé cuál debo especificar en el indicador de compilación ( -mfpu=neon/vfp/vfpv3
), o debo compilar el programa con cada uno de ellos, o simplemente no especifico el -mfpu
?
cat /proc/cpuinfo
Processor : ARMv7 Processor rev 4 (v7l)
BogoMIPS : 532.00
Features : swp half thumb fastmult vfp edsp neon vfpv3 tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x2
CPU part : 0xc09
CPU revision : 4
He probado cada uno de ellos, y parece usar -mfpu=neon
y especificar el -march=armv7-a
y -mfloat-abi=softfp
es la configuración correcta.
Además, una referencia ( ARM Cortex-A8 frente a Intel Atom ) es de gran utilidad para ARM BenchMark. Otro útil artículo es acerca de los procesadores ARM Cortex-A y las líneas de comando de gcc , esto borra la configuración del coprocesador SIMD.
Puede ser incluso un poco más complicado de lo que esperabas. La página de opciones de armado de GCC no explica las versiones de fpu, sin embargo, el manual de ARM para su compilador sí lo hace. También debe observar que Linux no proporciona una historia completa sobre las características de vfp
, solo que habla de vfp
, vfpv3
, vfpv3d16
o vfpv4
.
De regreso a su pregunta, debe seleccionar el mayor factor común entre ellos, compilar su código y comparar los resultados. Por otro lado, si una CPU tiene vfpv4 y otra tiene vfpv3, ¿cuál crees que es mejor?
Si su pregunta es tan simple como seleccionar entre neon
, vfp
o vfpv3
. Seleccione neon
(fuente) .
-mfpu=neon selects VFPv3 with NEON coprocessor extensions.
Del manual de gcc ,
Si el hardware de coma flotante seleccionado incluye la extensión NEON (p
-mfpu=neon
Ej.-mfpu=neon
), tenga en cuenta que las operaciones de coma flotante no se utilizarán por la pasada de auto-vectorización de GCC a menos que también se especifique `-funsafe-math-optimizations ''. Esto se debe a que el hardware NEON no implementa completamente el estándar IEEE 754 para la aritmética de punto flotante (en particular, los valores denormales se tratan como cero), por lo que el uso de las instrucciones NEON puede ocasionar una pérdida de precisión.
Ver por ejemplo, los números de coma flotante IEEE-754 subnormal soportan ios ... para más sobre este tema.