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 .