2015-03-19 1 views
1

J'ai une bibliothèque écrite en Fortran qui utilise le MKL d'Intel (lié statiquement). J'utilise ifort pour la compilation et la liaison.
Lorsque je lier ma bibliothèque (dynamiquement) avec un autre code en utilisant l'option -fpe0, je reçois des exceptions à virgule flottante dans le MKL, ce qui semble être une chose connue selon Intel et ne devrait pas inquiéter. Je suppose que c'est dû à certaines exécutions spéculatives.
Toutefois, lorsque quelqu'un d'autre utilise ma bibliothèque, il peut essayer d'utiliser -fpe0 pour lier son code à ma bibliothèque, ce qui peut entraîner des problèmes. Donc je me demandais: Y at-il un moyen de désactiver le gestionnaire FPE au moment de l'exécution en entrant dans ma bibliothèque et de le remettre à l'état d'origine sur le retour?
Merci!Désactiver le gestionnaire FPE à l'exécution dans Fortran

+0

Vérifiez le module intrinsèque 'ieee_exceptions'. Je ne l'ai jamais utilisé moi-même, alors je ne fais que commenter. –

+0

Merci cela fonctionne. Il convient de mentionner qu'avec gfortran au moins la version 4.10 est nécessaire. ifort le supporte au moins à partir de la v12 (ne pas avoir une ancienne version à tester avec ...) – fpnick

+0

Pouvez-vous poster des détails comme réponse? Cela pourrait être utile pour d'autres. –

Répondre

0

Comme Vladimir a souligné, la fonctionnalité demandée est fournie par le ieee_exceptions Module intrinsèque: See here

Ceci est soutenu par le ifort d'Intel à partir d'au moins la version 12 sur (testé) et probablement par gfortran de la version 4.10 (non testé).