2015-03-19 1 views
1

У меня есть библиотека, написанная в Fortran, которая использует MKL от Intel (связанный статически). Я использую ifort для компиляции и компоновки.
Когда я связываю свою библиотеку (динамически) с каким-то другим кодом, используя опцию -fpe0, я получаю исключения с плавающей запятой в MKL, что, по-видимому, является известной вещью в соответствии с Intel и не о чем беспокоиться. Я предполагаю, что это связано с некоторыми спекулятивными казнями.
Однако, когда кто-то использует мою библиотеку, они могут попытаться использовать -fpe0 для привязки своего кода к моей библиотеке, и это может привести к проблемам. Поэтому мне было интересно: есть ли способ отключить обработчик FPE во время выполнения при входе в мою библиотеку и вернуть его обратно в исходное состояние?
Спасибо!Отключить обработчик FPE во время выполнения в Fortran

+0

Проверьте встроенный модуль 'ieee_exceptions'. Никогда не использовал его сам, поэтому я просто комментирую. –

+0

Спасибо, что работает. Следует отметить, что с gfortran требуется не менее версии 4.10. ifort поддерживает его, по крайней мере, от v12 (нет старой версии для тестирования с ...) – fpnick

+0

Можете ли вы опубликовать данные в качестве ответа? Это может быть полезно для других. –

ответ

0

Как Владимир отметил, запрашиваемая функциональность обеспечивается ieee_exceptions присущей модуль: See here

Это поддерживается ifort Intel, по крайней мере версий 12 на (проверено) и предположительно gfortran от версии 4.10 (не тестировалось).

Смежные вопросы