毕昇编译器提供程序运行时浮点运算异常检测功能,并支持打印异常产生时的函数堆栈信息。该功能旨在提升HPC应用中浮点计算异常问题的定位效率。由于检测效率限制,当前仅支持检测到浮点异常产生的函数,堆栈信息中栈顶函数默认打印最后一行的行号,具体异常行号在函数中的位置需用户分析。浮点异常检测的类型包括:
FE_DIVBYZERO |
除0异常:如1.0/0.0 |
FE_INEXACT |
不精确异常:浮点需要取舍,如1.0/10.0 |
FE_INVALID |
无效异常:如sqrt(-1) |
FE_OVERFLOW |
上溢异常:如DBL_MAX*2.0 |
FE_UNDERFLOW |
下溢异常:如DBL_MIN/pow(2.0,52) |
FE_ALL_EXCEPT |
以上所有异常并集 |