2012-04-10 3 views
4

J'essayais de compiler un fichier F90 avec une triple précision (je sais que ce n'est pas commun mais, de toute façon ...). Après quelques minutes, il est dit ceci:compilateur Intel Fortran écrasé sur triple précision

ifort: error #10106: Fatal error in /opt/intel/Compiler/11.1/072/bin/intel64/fortcom, terminated by kill signal 
compilation aborted for foo.f90 (code 1) 

Ma commande de compilation est juste:

ifort -r16 foo.f90 

Mais, tout va bien quand j'utilise la double précision, en changeant la -r16 à -r8.

Pourriez-vous s'il vous plaît me dire quelle est la raison possible de cela? J'ai vérifié mes codes et je suppose qu'il n'y a pas de problème. Bien sûr, si vous avez besoin je pourrais vous montrer.

La version de mon compilateur est version 11.1 Construire 20100414

+3

Vous pouvez vous balader dans les notes de publication du compilateur - il peut y avoir des restrictions sur l'utilisation de -r16. –

+1

Peut-être que le compilateur consomme trop de mémoire avec l'option -r16? – haraldkl

Répondre

4

Je pense que r16 est quadruple précision, au moins dans l'usage courant, depuis 4 octets est considéré comme simple précision.

Puisqu'il existe une option du compilateur pour activer les réels de 16 octets, je doute qu'il soit complètement cassé.

Je suggère de compiler pièce par pièce pour trouver où le problème est. Un test rapide (calcul de la racine de 2) devrait vous montrer si le compilateur peut gérer des réels de 16 octets.

Utilisez-vous des pointeurs, des blocs communs, des modules ou des bibliothèques externes dans votre code?

+0

Merci. J'ai essayé un calcul simple en utilisant cette précision et il n'y a pas d'erreur. Donc je pense que mon compilateur peut gérer cette précision. Et, il n'y a pas de pointeurs, de blocs communs, de modules ou de bibliothèques externes. Juste un programme autonome. – agent99

+3

Qu'en est-il de ne pas utiliser les réels par défaut, mais en sélectionnant directement le type (en utilisant selected_real_kind(), iso_fortran_env, ou même kind (16)), est-ce qu'il plante aussi? –

+0

Merci à tous. J'ai modifié mon algorithme pour qu'il consomme moins de mémoire et c'est bon maintenant. – agent99

Questions connexes