2012-04-10 101 views
4

我想編譯一個f90文件三精度(我知道它不常見,但無論如何...)。一兩分鐘後,它說這個:英特爾fortran編譯器粉碎在三重精度

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) 

我的編譯命令就是:

ifort -r16 foo.f90 

但是,一切都還好,當我使用雙精度,通過改變-r16-r8

你能告訴我這可能是什麼原因?我檢查了我的代碼,我猜這沒有問題。當然,如果你需要,我可以告訴你。

我的編譯器的版本是版本11.1生成20100414

+3

您可能想要在編譯器的發行說明中仔細考慮 - 使用-r16時可能存在一些限制。 – 2012-04-10 20:36:28

+1

也許編譯器只是用-r16選項消耗太多內存? – haraldkl 2012-04-11 19:41:18

回答

4

我認爲R16是四精度,至少在常見的用法,因爲4個字節被認爲是單精度。

既然有編譯器選項,以使16個字節實數,我懷疑是徹底打破。

我會建議由一塊一塊編譯,找出問題的所在。一個快速測試(計算2的根)應該告訴你編譯器是否可以基本處理16字節的實數。

你使用指針,公共塊,模塊或外部庫在你的代碼?

+0

謝謝。我試過用這個精度進行一些簡單的計算,沒有錯誤。所以我認爲我的編譯器可以處理這個精度。而且,沒有指針,通用塊,模塊或外部庫。只是一個獨立的程序。 – agent99 2012-04-10 20:50:17

+3

不使用默認實數,直接選擇類型(使用selected_real_kind(),iso_fortran_env,甚至種類(16)),它也會崩潰嗎? – 2012-04-11 11:19:04

+0

謝謝大家。我修改了我的算法,使其消耗更少的內存,現在沒問題。 – agent99 2012-04-12 00:25:37

相關問題