2012-04-10 8 views
4

Ich habe versucht, eine F90-Datei mit dreifacher Präzision zu kompilieren (ich weiß, es ist nicht üblich, aber, trotzdem ...). Nach ein paar Minuten, sagt es so:Intel Fortran-Compiler auf dreifache Präzision zerquetscht

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) 

Meine ist Kompilation Befehl nur:

ifort -r16 foo.f90 

Aber, alles ist in Ordnung, wenn ich mit doppelter Genauigkeit verwenden, indem die -r16 zu -r8 ändern.

Können Sie mir bitte sagen, was der mögliche Grund dafür ist? Ich habe meine Codes überprüft und ich denke, es gibt kein Problem. Natürlich, wenn Sie brauchen, könnte ich Ihnen zeigen.

Die Version meiner Compiler ist Version 11.1 Build-20100414

+3

Sie möchten vielleicht in den Versionshinweisen für den Compiler herumspielen - es kann einige Einschränkungen geben, wenn Sie -r16 verwenden. –

+1

Vielleicht verbraucht der Compiler einfach zu viel Speicher mit der Option -r16? – haraldkl

Antwort

4

Ich denke, r16 ist vervierfachen Präzision, zumindest im allgemeinen Sprachgebrauch, da 4 Byte einfacher Genauigkeit berücksichtigt wird.

Da es eine Compiler-Option gibt, um 16-Byte-Reals zu aktivieren, bezweifle ich, dass es gründlich gebrochen ist.

Ich würde vorschlagen, Stück für Stück zu kompilieren, um herauszufinden, wo das Problem liegt. Ein schneller Test (Berechnung der Wurzel von 2) sollte Ihnen zeigen, ob der Compiler grundsätzlich 16-Byte-Reals verarbeiten kann.

Verwenden Sie in Ihrem Code Zeiger, allgemeine Blöcke, Module oder externe Bibliotheken?

+0

Danke. Ich habe einige einfache Berechnungen mit dieser Genauigkeit versucht und es gibt keinen Fehler. Also denke ich, dass mein Compiler mit dieser Genauigkeit umgehen kann. Und es gibt keine Zeiger, allgemeine Blöcke, Module oder externe Bibliotheken. Nur ein eigenständiges Programm. – agent99

+3

Was ist nicht mit Standard-Reals, aber die Art direkt auswählen (mit selected_real_kind(), iso_fortran_env oder sogar art (16)), stürzt es auch ab? –

+0

Danke euch allen. Ich habe meinen Algorithmus so geändert, dass er weniger Speicher verbraucht und jetzt ist es in Ordnung. – agent99