在 Fortran 中 运行 时间禁用 FPE 处理程序
Disable FPE handler on run-time in Fortran
我有一个用 Fortran 编写的库,它使用英特尔的 MKL(link静态编辑)。我正在使用 ifort 进行编译和 linking。
当我 link 我的库(动态地)与使用 -fpe0 选项的一些其他代码一起使用时,我在 MKL 中出现浮点异常,根据 Intel 的说法,这似乎是已知的事情,无需担心。我认为这是由于一些推测性的处决。
但是,当其他人使用我的库时,他们可能会尝试使用 -fpe0 将他们的代码 linking 到我的库中,这可能会导致麻烦。所以我想知道:在进入我的库并将其恢复到 return 时的原始状态时,是否有任何方法可以在运行时关闭 FPE 处理程序?
谢谢!
正如 Vladimir 所指出的,请求的功能由 ieee_exceptions 内部模块提供:See here
Intel 的 ifort 至少从 12 版(已测试)开始支持此功能,并且大概由 4.10 版(未测试)的 gfortran 支持。
我有一个用 Fortran 编写的库,它使用英特尔的 MKL(link静态编辑)。我正在使用 ifort 进行编译和 linking。
当我 link 我的库(动态地)与使用 -fpe0 选项的一些其他代码一起使用时,我在 MKL 中出现浮点异常,根据 Intel 的说法,这似乎是已知的事情,无需担心。我认为这是由于一些推测性的处决。
但是,当其他人使用我的库时,他们可能会尝试使用 -fpe0 将他们的代码 linking 到我的库中,这可能会导致麻烦。所以我想知道:在进入我的库并将其恢复到 return 时的原始状态时,是否有任何方法可以在运行时关闭 FPE 处理程序?
谢谢!
正如 Vladimir 所指出的,请求的功能由 ieee_exceptions 内部模块提供:See here
Intel 的 ifort 至少从 12 版(已测试)开始支持此功能,并且大概由 4.10 版(未测试)的 gfortran 支持。