Comenzaré con mi experiencia personal en nuestro laboratorio. En los últimos 9 y 10 días, solíamos ser bastante agresivos con las optimizaciones, compilando con -O3 e indicadores específicos del procesador (-xW -xSSE4.2 por ejemplo). Pero comenzando con ifort 11, comenzamos a notar:
1. algunas inconsistencias en los resultados (porque la semántica no se conservó)
2. ganancias menores en comparación con -O2.
Por lo tanto, actualmente simplemente compilamos con -O2 y -xhost. ¿Tiene mejores sugerencias con ifort 11? ¿Cambiará esto una vez más a medida que hacemos la transición al ifort 12? Gracias por adelantado.
performance
hpc
compiling
fortran
FrenchKheldar
fuente
fuente
Respuestas:
Recomendamos encarecidamente que todos nuestros usuarios comiencen
-O3 -xHost -ipo
tanto con ifort 11 como con ifort 12. Si hay transformaciones de punto flotante particulares habilitadas por O3 que afectan la precisión de algunos de sus cálculos, puede desactivarlos específicamente con-fp-model precise -fp-model except
(o, más drásticamente-fp-model strict
) mientras se conservan las otras optimizaciones que O3 permite, como el bloqueo de bucle para caché, fusión y desenrollado de bucle, y optimizaciones de acceso a memoria.Aconsejaría probar las cosas del modelo de punto flotante en archivos individuales y descubrir dónde hace la diferencia, en lugar de desactivarlo globalmente; puede ser un aumento de velocidad de ~ 15%, y desea poder mantener eso donde no afecte sus cálculos. Si no está seguro de dónde se ve afectada la precisión, puede jugar activando y desactivando las banderas del modelo de punto flotante para esos archivos, o jugando con modos de redondeo .
Recientemente dimos una breve charla a nuestros usuarios sobre los indicadores de optimización, centrándonos en los compiladores de GNU e Intel para x86; Puedes ver las diapositivas de esa charla aquí .
Por cierto, mientras hablamos de elegir banderas de optimización para su código, de vez en cuando también vale la pena mirar la salida de -vec-report para ver dónde el compilador intentó vectorizar un bucle y no pudo; a veces hay pequeños cambios que puede hacer en su ciclo que pueden resultar en una posible vectorización (que puede ser una aceleración 4x). Del mismo modo para el informe más general -opt-report .
fuente
-O3 -xhost -fp-model precise -fp-model except
resultó en una desaceleración del 30% . Volveré a mirar los perfiles y-vec-report
trataré de ver qué está pasando ...Trabajo para una empresa que produce aplicaciones grandes y altamente técnicas en Fortran con IFort: las aplicaciones son muy críticas para el rendimiento, ya que la velocidad (mientras se mantiene la precisión) es el principal punto de venta.
Siempre compilamos con -O3, y que yo sepa, las cosas principales que hace -O3 son el desenrollado de bucle y la captación previa. Sospecho que la mayoría de las aplicaciones informáticas científicas se benefician enormemente de estas, en particular las optimizaciones de bucle. No hemos visto errores del compilador en bastante tiempo (aunque hemos visto algunos errores de enlazador al usar Ifort en una Mac). Usamos 11.1.095.
Espero que esto ayude.
fuente
Me doy cuenta de que esta respuesta es probablemente demasiado, demasiado tarde, pero para una optimización agresiva, la opción "rápida" parece ser la solución más fácil. Extractos de la página del manual:
fuente