【问题标题】:intel fortran compiler crushed on triple precision英特尔 fortran 编译器在三重精度上崩溃
【发布时间】:2012-04-23 04:04:00
【问题描述】:

我试图编译一个具有三重精度的 f90 文件(我知道这并不常见,但无论如何......)。几分钟后,它会这样说:

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,使用双精度时一切正常。

你能告诉我这可能的原因是什么吗?我检查了我的代码,我想没有问题。当然,如果你需要我可以给你看。

我的编译器版本是Version 11.1 Build 20100414

【问题讨论】:

  • 您可能想在编译器的发行说明中搞砸——使用 -r16 可能会有一些限制。
  • 也许编译器只是使用 -r16 选项消耗了太多内存?

标签: compiler-construction fortran precision


【解决方案1】:

我认为 r16 是四倍精度,至少在常用的情况下,因为 4 个字节被认为是单精度。

由于有一个编译器选项可以启用 16 字节实数,我怀疑它被彻底破坏了。

我建议逐个编译以找出问题所在。快速测试(计算 2 的根)应该会告诉您编译器是否基本上可以处理 16 字节实数。

您是否在代码中使用指针、通用块、模块或外部库?

【讨论】:

  • 谢谢。我用这个精度尝试了一些简单的计算,没有错误。所以我认为我的编译器可以处理这种精度。而且,没有指针、通用块、模块或外部库。只是一个独立的程序。
  • 不使用默认实数,直接选择种类(使用selected_real_kind(),iso_fortran_env,甚至kind(16)),会不会也崩溃?
  • 谢谢大家。我已经修改了我的算法,使其消耗更少的内存,现在可以了。
猜你喜欢
  • 2016-04-26
  • 2017-03-06
  • 2010-12-04
  • 2021-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多