- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
I've been doing some performance regression testing of Ifort 2021.3 against XE2019U5 and have noticed performance degradations of about 20-30% with my two real world test models with our simulation engine. Minimal changes have been made to the solution to allow it to build with Ifort 2021.3 with VS 2019.
Profiling with VTune suggests some new Fortran RTL calls may be responsible: _for_ieee_signaling_lt_k8_ and _for_ieee_signaling_gt_k8_.
For example:
XE2019U5 - elapsed 109.756s, CPU 1608.253s
Ifort 2021.3 - elapsed 140.515s, CPU 2058.113s
- _for_ieee_signaling_lt_k8_ - 118.048s
- _for_ieee_signaling_gt_k8_ - 65.388s
My tests are being run on a Dell Precision 7540 with Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz 2.30 GHz.
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
I believe this is down to a new feature for IEEE signaling comparisons that is enabled by /standard-semantics, which we use, see https://software.intel.com/content/www/us/en/develop/documentation/fortran-compiler-oneapi-dev-guide-and-reference/top/language-reference/new-language-features.html
To disable use /assume:noieee_compares
Ссылка скопирована
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
Are the options for run time checks the same in each case? If they are you might find it interesting to switch some of those off and see if the difference does away.
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
Hi Andrew,
I believe the run time check options are the same for both compilers. I did add a suppression for W7762 for Ifort 2021, but don't believe it's significant. Also, I changed the standards checking on one project from Fortran 2003 to 2008.
I wonder whether the default run time checks have changed though?
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
I believe this is down to a new feature for IEEE signaling comparisons that is enabled by /standard-semantics, which we use, see https://software.intel.com/content/www/us/en/develop/documentation/fortran-compiler-oneapi-dev-guide-and-reference/top/language-reference/new-language-features.html
To disable use /assume:noieee_compares

- Подписка на RSS-канал
- Отметить тему как новую
- Отметить тему как прочитанную
- Выполнить отслеживание данной Тема для текущего пользователя
- Закладка
- Подписаться
- Страница в формате печати