【问题标题】:Disable FPE handler on run-time in Fortran在 Fortran 运行时禁用 FPE 处理程序
【发布时间】:2015-03-19 22:51:59
【问题描述】:

我有一个用 Fortran 编写的库,它使用 Intel 的 MKL(静态链接)。我正在使用 ifort 进行编译和链接。
当我使用 -fpe0 选项将我的库(动态)与一些其他代码链接时,我在 MKL 中得到浮点异常,这似乎是英特尔已知的事情,无需担心。我认为这是由于一些投机性的执行。
但是,当其他人使用我的库时,他们可能会尝试使用 -fpe0 将他们的代码链接到我的库,这可能会导致麻烦。所以我想知道:有没有办法在运行时关闭 FPE 处理程序,当进入我的库并在返回时将其恢复到原始状态?
谢谢!

【问题讨论】:

  • 检查 ieee_exceptions 内部模块。我自己从来没有用过,所以我只是评论。
  • 谢谢你的作品。应该提到的是,使用 gfortran 至少需要 4.10 版本。 ifort 至少从 v12 开始支持它(没有旧版本可以测试...)
  • 您可以发布详细信息作为答案吗?它可能对其他人有用。

标签: error-handling fortran libraries intel-mkl sigfpe


【解决方案1】:

正如 Vladimir 指出的,请求的功能由 ieee_exceptions 内部模块提供:See here

英特尔的 ifort 至少从版本 12 开始支持(已测试),并且可能由版本 4.10 的 gfortran 支持(未测试)。

【讨论】:

    猜你喜欢
    • 2015-08-10
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    相关资源
    最近更新 更多